数字图像处理之边缘检测
2013-12-23 23:45
260 查看
边缘检测即将原图像中景物或人物等的边缘(轮廓)的检测。
其实边缘检测和锐化真的比较相近,只是程度不同而已。通过对边缘点做灰度差分即可得到边缘。(可参考上一博)
通常为了让效果更佳明显,会做一个二值化。
至于二值化的方法也有很多种,比如全局的二值化的Ostu算法,迭代算法,大津法等,还有自适应的二值化等,之后的文章会详细进行介绍。
对于边缘检测 同样可以使用拉普拉斯算子,Kirsh算子,Canny算子等。
拉普拉斯算子
Kirsh算子之一
Canny算子之一
以下是以Kirsh算子为例做卷积对图像进行边缘检测:其中最后使用了二值化使效果更明显。
以下是效果图:
原图
边缘检测图:
拉普拉斯
Kirsh
canny
二值化后的图像
拉普拉斯
kirsh
canny
其实边缘检测和锐化真的比较相近,只是程度不同而已。通过对边缘点做灰度差分即可得到边缘。(可参考上一博)
通常为了让效果更佳明显,会做一个二值化。
至于二值化的方法也有很多种,比如全局的二值化的Ostu算法,迭代算法,大津法等,还有自适应的二值化等,之后的文章会详细进行介绍。
对于边缘检测 同样可以使用拉普拉斯算子,Kirsh算子,Canny算子等。
拉普拉斯算子
Kirsh算子之一
Canny算子之一
以下是以Kirsh算子为例做卷积对图像进行边缘检测:其中最后使用了二值化使效果更明显。
#Kirsch算子边缘化 def Kirsch(): global edgeImage kir = [ 5 , -3 , -3, -3 , 0 , 5, -3 , 5 , -3 ] image = originalImage.convert('L'); h,w = image.size opix = image.load() processImage = Image.new('L' , (h,w)) npix = processImage.load() total = 0 for i in range(h): for j in range(w): f11 = opix[abs(i - 1) , abs(j - 1)] f12 = opix[abs(i - 1) , j] if j != w - 1: f13 = opix[abs(i - 1) , j + 1] else: f13 = opix[abs(i - 1) , j] f21 = opix[i , abs(j - 1)] f22 = opix[i , j] if j != w - 1: f23 = opix[i , j + 1] else : f23 = opix[i , j] if i != h - 1: f31 = opix[i + 1 , abs(j - 1)] else: f31 = opix[i , abs(j - 1)] if i != h - 1: f32 = opix[i + 1 , j] else: f32 = opix[i , j] if i != h - 1 and j != w - 1: f33 = opix[i + 1 , j + 1] else : f33 = opix[i , j] temp = f11 * kir[0] + f12 * kir[1] + f13 * kir[2] + f21 * kir[3] + f22 * kir[4] + f23 * kir[5] + f31 * kir[6] + f32 * kir[7] + f33 * kir[8] npix[i,j] = temp; total += abs(temp) val = total / (h * w) * 1.618 edgeImage = processImage.convert('L') for i in range (h): for j in range (w): if (npix[i,j] < val): npix[i,j] = 0 else : npix[i,j] = 255
以下是效果图:
原图
边缘检测图:
拉普拉斯
Kirsh
canny
二值化后的图像
拉普拉斯
kirsh
canny
相关文章推荐
- 数字图像处理之sobel边缘检测
- 数字图像处理--图像锐化和边缘检测
- 数字图像处理5--边缘检测探究(内容较多,持续更新)
- 彩色图像边缘检测--求RGB的最大变化率方向(数字图像处理(Digital Image Processing Second Edition)冈萨雷斯)
- Win8Metro(C#)数字图像处理--2.12Sobel边缘检测
- (7)Air Band数字图像处理基础-边缘检测和轮廓跟踪
- Win8Metro(C#)数字图像处理--2.13Roberts边缘检测
- 数字图像处理:8.边缘检测
- 【数字图像处理】Canny边缘检测详解及编程实现
- 【数字图像处理】Canny边缘检测详解及编程实现
- 【数字图像处理】Canny边缘检测详解及编程实现
- 数字图像处理-图像的边缘检测
- Win8Metro(C#)数字图像处理--2.14Prewitt 边缘检测
- 数字图像处理-边缘检测-Sobel算子及cvSobel
- 数字图像处理——边缘检测算子…
- 【数字图像处理】Canny边缘检测详解及编程实现
- 数字图像处理15--互相关匹配边缘检测
- 数字图像处理之边缘检测,图像分割
- 数字图像处理 边缘检测
- 数字图像处理-边缘检测