本文介绍边界检测的方法。
对图片的像素,用这个像素的邻域像素与这个像素的差值,来代替这个像素,得到的新的图像,就会呈现类似于【简笔画】的效果。
这个过程,可以保留图形中物体的边界,而忽略其它的细节。
给出灰度图。
用像素右边的像素减去这个像素,差值代替这个像素。
img=io.imread('0.jpg')[:,:,0]
pic=img*1
u,v=img.shape
for i in range(u):
for j in range(v):
if i <u-1:
pic[i,j]=img[i+1,j]-img[i,j]
用像素下边的像素减去这个像素,差值代替这个像素。
for i in range(u):
for j in range(v):
if j<v-1:
pic[i,j]=img[i,j+1]-img[i,j]
用像素右边的像素和下边的像素的和,减去这个像素的二倍,来代替这个像素:
for i in range(u):
for j in range(v):
if i<u-1 and j<v-1:
pic[i,j]=int(img[i,j+1]+img[i+1,j]-2*img[i,j])
用像素上下左右四个像素的和,减去这个像素的四倍,来代替这个像素:
for i in range(1,u):
for j in range(1,v):
if i<u-1 and j<v-1:
pic[i,j]=int(img[i,j+1]+img[i+1,j]+img[i,j-1]+img[i-1,j]-4*img[i,j])
这相当于使用下面的卷积内核进行的卷积处理:
kernel=[0,1,0,1,-4,1,0,1,0]
pic=juanji(img,kernel)