我正在对图像进行侵蚀。图像已相应填充。简而言之,我有一个交叉元素(+),我将它放在图像的每个像素上,并从上方、下方、右、左和其自身的像素中选择该像素的最低值。
它效率低下,我无法找出矢量化版本。这必须是可能的,因为所有计算都是相互独立完成的。
for y in range(t,image.shape[0]-b):
for x in range(l,image.shape[1]-r):
a1 = numpy.copy(str_ele)
for filter_y in range(a1.shape[0]):
for filter_x in range(a1.shape[1]):
if (not (numpy.isnan(a1[filter_y][filter_x]))):
a1[filter_y][filter_x] = str_ele[filter_y][filter_x]*image[y+(filter_y-str_ele_center_y)][x+(filter_x-str_ele_center_x)]
eroded_image[y][x] = numpy.nanmin(a1)
基本上:
最终图像中的每个像素 = 原始图像的 min(pixel, above, below, left, right)
for y in range(len(eroded_image)):
for x in range(len(eroded_image[1])):
eroded_image2[y][x] = numpy.nanmin(str_ele*image2[y:y+len(str_ele),x:x+(len(str_ele[1]))])
这就是我现在所拥有的。还是2圈。