Python 相当于来自 MATLAB 的 "bwarea"
Python equivalent of "bwarea" from MATLAB
我正在尝试检测黑色图像中白色物体周边的不规则程度。我在 MATLAB 中找到了一些很好的代码来完成它,但它依赖于函数 bwarea
,它似乎是一个考虑周长的加权区域。我不确定 python 中的等效代码是什么 - 如果有人能给我一个等效代码,我将不胜感激。或者,如果有人知道用于确定黑色图像(即二值图像)中白色物体的周长不规则性的良好指标,那也会有所帮助!!
感谢您指点文档!我在下面包含了我的实现。我怀疑它是否非常有效,但它对我来说已经足够好了:
def patternScore(neighborhood):
m_sum = 0
m_sum = neighborhood[0,0] + neighborhood[0,1] + neighborhood[1,0] + neighborhood[1,1]
if(m_sum == 3):
return float(7.0/8.0)
elif(m_sum == 0):
return 0
elif(m_sum == 1):
return float(1.0/4.0)
elif(m_sum == 4):
return 1
else:
if(neighborhood[0][1] == neighborhood[0][0]):
return .5
elif(neighborhood[1][0] == neighborhood[0][0]):
return .5
else:
return .75
def neighbors(im, i, j, d=1):
im = np.array(im).astype(int)
top_left = im[i-d:i+d, j-d:j+d]
top_right = im[i-d:i+d, j:j+d+1]
bottom_left = im[i:i+d+1, j-d:j+d]
bottom_right = im[i:i+d+1, j:j+d+1]
pattern = (patternScore(top_left) + patternScore(top_right) + patternScore(bottom_left) + patternScore(bottom_right))
return pattern
def bwarea(img):
d = 1
area = 0
for i in range(1,img.shape[0]-1):
for j in range(1,img.shape[1]-1):
area += neighbors(img,i,j)
return area
我正在尝试检测黑色图像中白色物体周边的不规则程度。我在 MATLAB 中找到了一些很好的代码来完成它,但它依赖于函数 bwarea
,它似乎是一个考虑周长的加权区域。我不确定 python 中的等效代码是什么 - 如果有人能给我一个等效代码,我将不胜感激。或者,如果有人知道用于确定黑色图像(即二值图像)中白色物体的周长不规则性的良好指标,那也会有所帮助!!
感谢您指点文档!我在下面包含了我的实现。我怀疑它是否非常有效,但它对我来说已经足够好了:
def patternScore(neighborhood):
m_sum = 0
m_sum = neighborhood[0,0] + neighborhood[0,1] + neighborhood[1,0] + neighborhood[1,1]
if(m_sum == 3):
return float(7.0/8.0)
elif(m_sum == 0):
return 0
elif(m_sum == 1):
return float(1.0/4.0)
elif(m_sum == 4):
return 1
else:
if(neighborhood[0][1] == neighborhood[0][0]):
return .5
elif(neighborhood[1][0] == neighborhood[0][0]):
return .5
else:
return .75
def neighbors(im, i, j, d=1):
im = np.array(im).astype(int)
top_left = im[i-d:i+d, j-d:j+d]
top_right = im[i-d:i+d, j:j+d+1]
bottom_left = im[i:i+d+1, j-d:j+d]
bottom_right = im[i:i+d+1, j:j+d+1]
pattern = (patternScore(top_left) + patternScore(top_right) + patternScore(bottom_left) + patternScore(bottom_right))
return pattern
def bwarea(img):
d = 1
area = 0
for i in range(1,img.shape[0]-1):
for j in range(1,img.shape[1]-1):
area += neighbors(img,i,j)
return area