【图像处理】图像的边界检测基本方法
1、给出灰度图。

2、用像素右边的像素减去这个像素,差值代替这个像素。
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]

3、用像素下边的像素减去这个像素,差值代替这个像素。
for i in range(u):
for j in range(v):
if j<v-1:
pic[i,j]=img[i,j+1]-img[i,j]

4、用像素右边的像素和下边的像素的和,减去这个像素的二倍,来代替这个像素:
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])

5、用像素上下左右四个像素的和,减去这个像素的四倍,来代替这个像素:
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])

6、这相当于使用下面的卷积内核进行的卷积处理:
kernel=[0,1,0,1,-4,1,0,1,0]
pic=juanji(img,kernel)

1、给定RGB图片。
img=io.imread('0.jpg')

2、把图片转化为灰度图。
img=hui(img)

3、把灰度图二值化,用Otsu方法:
img=otsu(img)

4、用[0, 1, 0, 1, -4, 1, 0, 1, 0]作为卷积模版进行卷积变换,就相当于检测边界。
import imageio as io
from Zft import *
img=io.imread('0.jpg')
img=hui(img)
img=otsu(img)
kernel=[0, 1, 0, 1, -4, 1, 0, 1, 0]
img=juanji(img,kernel)
io.imsave('00.png',img)

5、换个模版,只检测竖向边界:
import imageio as io
from Zft import *
img=io.imread('0.jpg')
img=hui(img)
img=otsu(img)
kernel=[0,0,0,-1,2,-1,0,0,0]
img=juanji(img,kernel)
io.imsave('00.png',img)

6、只检测横向边界:
import imageio as io
from Zft import *
img=io.imread('0.jpg')
img=hui(img)
img=otsu(img)
kernel=[0,-1,0,0,2,0,0,-1,0]
img=juanji(img,kernel)
io.imsave('00.png',img)
