def iaopentransf(f, type='OCTAGON', n=65535, Bc=iasecross(), Buser=iasecross()): from iaisbinary import iaisbinary from iabinary import iabinary from iaisequal import iaisequal from iaopen import iaopen from iasesum import iasesum from iasedisk import iasedisk from iaaddm import iaaddm from iagray import iagray from iagrain import iagrain from ialabel import ialabel assert iaisbinary(f), 'Error: input image is not binary' type = upper(type) rec_flag = find(type, '-REC') if rec_flag != -1: type = type[:rec_flag] # remove the -rec suffix flag = not ((type == 'OCTAGON') or (type == 'CHESSBOARD') or (type == 'CITY-BLOCK')) if not flag: n = min(n, min(f.shape)) elif type == 'LINEAR-H': se = iabinary([1, 1, 1]) n = min(n, f.shape[1]) elif type == 'LINEAR-V': se = iabinary([[1], [1], [1]]) n = min(n, f.shape[0]) elif type == 'LINEAR-45R': se = iabinary([[0, 0, 1], [0, 1, 0], [1, 0, 0]]) n = min(n, min(f.shape)) elif type == 'LINEAR-45L': se = iabinary([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) n = min(n, min(f.shape)) elif type == 'USER': se = Buser n = min(n, min(f.shape)) else: print 'Error: only accepts OCTAGON, CHESSBOARD, CITY-BLOCK, LINEAR-H, LINEAR-V, LINEAR-45R, LINEAR-45L, or USER as type, or with suffix -REC.' return [] k = 0 y = uint16(zeros(f.shape)) a = iabinary([1]) z = iabinary([0]) while not (iaisequal(a, z) or (k >= n)): print 'processing r=', k if flag: a = iaopen(f, iasesum(se, k)) else: a = iaopen(f, iasedisk(k, '2D', type)) y = iaaddm(y, iagray(a, 'uint16', 1)) k = k + 1 if rec_flag != -1: y = iagrain(ialabel(f, Bc), y, 'max') return y
def iaopentransf(f, type='OCTAGON', n=65535, Bc=iasecross(), Buser=iasecross()): from iaisbinary import iaisbinary from iabinary import iabinary from iaisequal import iaisequal from iaopen import iaopen from iasesum import iasesum from iasedisk import iasedisk from iaaddm import iaaddm from iagray import iagray from iagrain import iagrain from ialabel import ialabel assert iaisbinary(f),'Error: input image is not binary' type = upper(type) rec_flag = find(type,'-REC') if rec_flag != -1: type = type[:rec_flag] # remove the -rec suffix flag = not ((type == 'OCTAGON') or (type == 'CHESSBOARD') or (type == 'CITY-BLOCK')) if not flag: n = min(n,min(f.shape)) elif type == 'LINEAR-H': se = iabinary([1, 1, 1]) n = min(n,f.shape[1]) elif type =='LINEAR-V': se = iabinary([[1],[1],[1]]) n = min(n,f.shape[0]) elif type == 'LINEAR-45R': se = iabinary([[0, 0, 1],[0, 1, 0],[1, 0, 0]]) n = min(n,min(f.shape)) elif type == 'LINEAR-45L': se = iabinary([[1, 0, 0],[0, 1, 0],[0, 0, 1]]) n = min(n,min(f.shape)) elif type == 'USER': se = Buser n = min(n,min(f.shape)) else: print 'Error: only accepts OCTAGON, CHESSBOARD, CITY-BLOCK, LINEAR-H, LINEAR-V, LINEAR-45R, LINEAR-45L, or USER as type, or with suffix -REC.' return [] k = 0 y = uint16(zeros(f.shape)) a = iabinary([1]) z = iabinary([0]) while not ( iaisequal(a,z) or (k>=n)): print 'processing r=',k if flag: a = iaopen(f,iasesum(se,k)) else: a = iaopen(f,iasedisk(k,'2D',type)) y = iaaddm(y, iagray(a,'uint16',1)) k = k+1 if rec_flag != -1: y = iagrain( ialabel(f,Bc),y,'max') return y
def iabshow(f1, f2=None, f3=None, factor=17): from iabinary import iabinary from iaframe import iaframe from iadil import iadil from iaunion import iaunion from iasedisk import iasedisk from iaserot import iaserot from iasecross import iasecross from iasesum import iasesum assert f1.dtype == bool, 'f1 must be boolean image' factor = max(factor, 9) hfactor = factor / 2 if size(f1.shape) == 1: f1 = f1[newaxis, :] if f2 != None: f2 = f2[newaxis, :] if f3 != None: f3 = f3[newaxis, :] bz = zeros(factor * array(f1.shape)).astype(bool) b0 = asarray(bz) b0[hfactor::factor, hfactor::factor] = f1 fr1 = iaframe(zeros((factor, factor), bool)) fr1 = iadil(b0, fr1) if f2 != None: assert f1.shape == f2.shape, 'f1 and f2 must have same shape' b1 = asarray(bz) b1[hfactor::factor, hfactor::factor] = f2 fr2 = iadil(b1, iasedisk(hfactor - 4)) fr1 = iaunion(fr1, fr2) if f3 != None: assert f1.shape == f3.shape, 'f1 and f3 must have same shape' bz[hfactor::factor, hfactor::factor] = f3 fr3 = iadil(bz, iasesum(iaserot(iasecross(1), 45), hfactor - 1)) fr1 = iaunion(fr1, fr3) return fr1
def iabshow(f1, f2=None, f3=None, factor=17): from iabinary import iabinary from iaframe import iaframe from iadil import iadil from iaunion import iaunion from iasedisk import iasedisk from iaserot import iaserot from iasecross import iasecross from iasesum import iasesum assert f1.dtype == bool, 'f1 must be boolean image' factor = max(factor,9) hfactor = factor/2 if size(f1.shape) == 1: f1 = f1[newaxis,:] if f2 != None: f2 = f2[newaxis,:] if f3 != None: f3 = f3[newaxis,:] bz = zeros(factor * array(f1.shape)).astype(bool) b0 = asarray(bz) b0[hfactor::factor,hfactor::factor] = f1 fr1 = iaframe(zeros((factor,factor),bool)) fr1 = iadil(b0,fr1) if f2 != None: assert f1.shape == f2.shape, 'f1 and f2 must have same shape' b1 = asarray(bz) b1[hfactor::factor,hfactor::factor] = f2 fr2 = iadil(b1,iasedisk(hfactor - 4)) fr1 = iaunion(fr1,fr2) if f3 != None: assert f1.shape == f3.shape, 'f1 and f3 must have same shape' bz[hfactor::factor,hfactor::factor] = f3 fr3 = iadil(bz, iasesum(iaserot(iasecross(1),45),hfactor - 1)) fr1 = iaunion(fr1,fr3) return fr1