关于香港服务器中图像的腐蚀与膨胀
对于香港服务器的使用者来说,实现图像处理中的图像的腐蚀与膨胀无疑是十分有好处的,同时图像的腐蚀与膨胀作为数字图像处理里面的基本的操作,是实现其它图像操作的基础,鉴于此,小编就带领大家深入的学习一下如何实现对于一幅二值图像的腐蚀与膨胀。
在编写具体的代码之前我们来介绍一下图像的腐蚀与膨胀的基本内涵:
首先是图像的腐蚀:腐蚀膨胀是图像形态学比较常见的处理,实现了消除噪点,分割独立的图像,图像的腐蚀操作是用来对二值图像进行操作,二值图像即全部是由0和1两种值构成的图像,通常来讲,0代表的是背景,1代表的是图像的值,假设目前图像是一个0和1组成的图像,可以用一个结构元素去腐蚀原图,这个过程可以有以下的表述:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后找到原图对应区域内的最小值,用这个最小值替换当前像素值。在这里是用0替换。因此腐蚀看起来的效果就是让前景物体缩小了一圈一样,事实上只是边缘部分被背景值给替换掉了。对于图像中一些细小的连接处,如果结构元素大小相等,这些连接处就会被断开。
接下来我们介绍一下图像的膨胀的基本原理:假设原图像中存在一个图像,那么我们也可以用一个结构元素去膨胀原图,这个过程的执行是这样的:遍历原图像的每一个像素,用一个合适大小的窗口去覆盖它,然找到像素的最大值,用这个最大值替换当前像素值。在这里最大值就是1(因为只存在两种值0和1),我们可以进行更深入的分析,如果当前结构元素覆盖下,全部都是背景,因为都是0,所以也不需要对原图像进行改动,如果全部都是1,同理原图也无需改动,只有图像的值存在0和1之间的变化,才需要对图像进行改动。因此对于细小的断裂处,图像的膨胀操作可以使这些断裂的地方连接起来。
图像腐蚀的相关代码实现:
w = imGray.width //取得图像的宽度。
h = imGray.height //取得图像的长度。
size = (w,h)
arr = [[0 for i in range(w)] for i in range(h)] //生成一个可以装下图像的数组。
iCorrode = numpy.array(arr)
for i in range(h):
for j in range(w):
if i in range(1) or i in range(h-1,h) or j in range(1) or j in range(w-1,w): //生成我们所需要的遍历窗口。
iCorrode[i,j] = 255
elif imArray[i,j] == 255:
iCorrode[i,j] = 255
else:
a = []
for k in range(3):
for l in range(3):
a.append(imArray[i-1+k,j-1+l])
if max(a) == 255:
iCorrode[i,j] = 255
else:
iCorrode[i,j] = 0
图像膨胀的相关代码实现:
iExpand = numpy.array(arr)
for i in range(h):
for j in range(w):
iExpand[i,j] = 255
for i in range(h):
for j in range(w):
if iCorrode[i,j] == 0:
for k in range(5):
for l in range(5):
if -1<(i-2+k)
iExpand[i-2+k,j-2+l] = 0
图像的腐蚀和膨胀小编就带领大家介绍到这里了。
如果您还有什么不明确或者是不懂的地方,欢迎来新世界主机咨询了解,详情请咨询Skype:vpssj.net@hotmail.com TEL: 400 1109 210。我们必将竭诚为您服务。