[mmreadgray] [Up] [mmis] Relations

mmcmp
Compare two images pixelwisely.

Synopsis

y = mmcmp( f1, oper, f2, oper1 = None, f3 = None )

Implemented in Python.

Input

f1 Image Gray-scale (uint8 or uint16) or binary image.
oper String

relationship from: '==', '~=', '<','<=', '>', '>='.

f2 Image Gray-scale (uint8 or uint16) or binary image.
oper1 String

relationship from: '==', '~=', '<','<=', '>', '>='.

Default: None

f3 Image Gray-scale (uint8 or uint16) or binary image.

Default: None

Output

y Image Binary image.

Description

Apply the relation oper to each pixel of images f1 and f2, the result is a binary image with the same size. Optionally, it is possible to make the comparison among three image. It is possible to use a constant value in place of any image, in this case the constant is treated as an image of the same size as the others with all pixels with the value of the constant.

Examples

>>> print mmcmp(uint8([1, 2, 3]),'<', uint8(2))
[1 0 0]
>>> print mmcmp(uint8([1, 2, 3]),'<', uint8([0, 2, 4]))
[0 0 1]
>>> print mmcmp(uint8([1, 2, 3]),'==', uint8([1, 1, 3]))
[1 0 1]

>>> f=mmreadgray('keyb.tif')

              
>>> fbin=mmcmp(uint8(10), '<', f, '<', uint8(50))
Warning: Converting input image from int32 to uint16.
Warning: Converting input image from int32 to uint16.
>>> mmshow(f)

              
>>> mmshow(fbin)

            
f fbin

Source Code

def mmcmp(f1, oper, f2, oper1=None, f3=None):
    if   oper == '==':    y = (f1==f2)
    elif oper == '~=':    y = (f1!=f2)
    elif oper == '<=':    y = (f1<=f2)
    elif oper == '>=':    y = (f1>=f2)
    elif oper == '>':     y = (f1> f2)
    elif oper == '<':     y = (f1< f2)
    else:
        assert 0, 'oper must be one of: ==, ~=, >, >=, <, <=, it was:'+oper
    if oper1 != None:
        if   oper1 == '==':     y = mmintersec(y, f2==f3)
        elif oper1 == '~=':     y = mmintersec(y, f2!=f3)
        elif oper1 == '<=':     y = mmintersec(y, f2<=f3)
        elif oper1 == '>=':     y = mmintersec(y, f2>=f3)
        elif oper1 == '>':      y = mmintersec(y, f2> f3)
        elif oper1 == '<':      y = mmintersec(y, f2< f3)
        else:
            assert 0, 'oper1 must be one of: ==, ~=, >, >=, <, <=, it was:'+oper1
    y = mmbinary(y)
    return y
    

See also

mmis Verify if a relationship among images is true or false.
mmthreshad Threshold (adaptive)
mmfreedom Control automatic data type conversion.
[mmreadgray] [Up] [mmis] Python