[mmcmp] [Up] [mmisbinary] Relations

mmis
Verify if a relationship among images is true or false.

Synopsis

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

Implemented in Python.

Input

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

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

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

Default: None

oper1 String

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

Default: None

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

Default: None

Output

y Double

Bool value: 0 or 1

Description

Verify if the property or relatioship between images is true or false. The result is true if the relationship is true for all the pixels in the image, and false otherwise. (Obs: This function replaces mmisequal, mmislesseq, mmisbinary).

Examples

>>> fbin=mmbinary([0, 1])

              
>>> f1=uint8([1, 2, 3])

              
>>> f2=uint8([2, 2, 3])

              
>>> f3=uint8([2, 3, 4])

              
>>> mmis(fbin,'binary')
1.0
>>> mmis(f1,'gray')
1
>>> mmis(f1,'==',f2)
0.0
>>> mmis(f1,'<',f3)
1.0
>>> mmis(f1,'<=',f2)
1.0
>>> mmis(f1,'<=',f2,'<=',f3)
            
1.0

Source Code

def mmis(f1, oper, f2=None, oper1=None, f3=None):
    from string import upper
    if f2 == None:
        oper=upper(oper);
        if   oper == 'BINARY': return mmisbinary(f1)
        elif oper == 'GRAY'  : return not mmisbinary(f1)
        else:
            assert 0,'oper should be BINARY or GRAY, was'+oper
    elif oper == '==':    y = mmisequal(f1, f2)
    elif oper == '~=':    y = not mmisequal(f1,f2)
    elif oper == '<=':    y = mmislesseq(f1,f2)
    elif oper == '>=':    y = mmislesseq(f2,f1)
    elif oper == '>':     y = mmisequal(mmneg(mmthreshad(f2,f1)),mmbinary(1))
    elif oper == '<':     y = mmisequal(mmneg(mmthreshad(f1,f2)),mmbinary(1))
    else:
        assert 0,'oper must be one of: ==, ~=, >, >=, <, <=, it was:'+oper
    if oper1 != None:
        if   oper1 == '==': y = y and mmisequal(f2,f3)
        elif oper1 == '~=': y = y and (not mmisequal(f2,f3))
        elif oper1 == '<=': y = y and mmislesseq(f2,f3)
        elif oper1 == '>=': y = y and mmislesseq(f3,f2)
        elif oper1 == '>':  y = y and mmisequal(mmneg(mmthreshad(f3,f2)),mmbinary(1))
        elif oper1 == '<':  y = y and mmisequal(mmneg(mmthreshad(f2,f3)),mmbinary(1))
        else:
            assert 0,'oper1 must be one of: ==, ~=, >, >=, <, <=, it was:'+oper1
    return y
    

See also

mmcmp Compare two images pixelwisely.
mmfreedom Control automatic data type conversion.
mmbinary Convert a gray-scale image into a binary image
mmgray Convert a binary image into a gray-scale image.
[mmcmp] [Up] [mmisbinary] Python