Python图像处理之边缘检测
来源:互联网 发布:最终幻想雷霆身材数据 编辑:程序博客网 时间:2024/05/18 10:29
在图像识别中,需要有边缘鲜明的图像,即图像锐化。图像锐化的目的是为了突出图像的边缘信息,加强图像的轮廓特征,以便于人眼的观察和机器识别。
在空间域进行图像锐化主要有以下几种方法:
1、梯度算子
图像的边缘最直观的表现就是边缘两侧的灰度值相差比较大,在微积分中我们学过梯度的概念
梯度是一个列向量,可表示为:
而某点处梯度的模很好的反应了该点两侧的变化大小
所以,梯度值很大的点也就代表了图像的边缘
而在实际计算中,为了降低运算量,一般用一下两种方法来代替模运算
由于数字图像处理中处理的是数字离散信号
所以,我们用差分来等同于连续信号中的微分运算
典型的梯度运算有
而另一种称为Roberts梯度的差分运算可由下来表示:
Python测试代码如下:
__author__ = 'Administrator'import cvdef Sharp(image,flag1=0,flag2=0): w = image.width h = image.height size = (w,h) iSharp = cv.CreateImage(size,8,1) for i in range(h-1): for j in range(w-1): if flag2 == 0: x = abs(image[i,j+1]-image[i,j]) y = abs(image[i+1,j]-image[i,j]) else: x = abs(image[i+1,j+1]-image[i,j]) y = abs(image[i+1,j]-image[i,j+1]) if flag1 == 0: iSharp[i,j] = max(x,y) else: iSharp[i,j] = x+y return iSharpimage = cv.LoadImage('18.jpg',0)iMaxSharp = Sharp(image)iAddSharp = Sharp(image,1)iRMaxSharp = Sharp(image,0,1)iRAddSharp = Sharp(image,1,1)cv.ShowImage('iMaxSharp',iMaxSharp)cv.ShowImage('image',image)cv.ShowImage('iAddSharp',iAddSharp)cv.ShowImage('iRAddSharp',iRAddSharp)cv.ShowImage('iRMaxSharp',iRMaxSharp)cv.WaitKey(0)
我们来看看运行结果:
1 0
- Python图像处理之边缘检测
- Python图像处理(8):边缘检测
- 数字图像处理之边缘检测,图像分割
- 图像处理之边缘检测概述
- 图像处理之Canny边缘检测
- 图像处理之Canny边缘检测
- 图像处理之Canny边缘检测
- opengles图像处理之边缘检测
- 【图像处理】图像边缘检测
- 图像处理之图像的边缘、轮廓检测
- c#图像处理-边缘检测
- 图像处理与边缘检测
- 图像处理------Canny边缘检测
- 图像处理25:边缘检测
- OpenCV图像处理篇之边缘检测算子
- opencv6.3-imgproc图像处理模块之边缘检测
- 图像分割之边缘检测
- 【图像处理】彩色图像边缘检测
- 区间覆盖问题
- SPFA算法(求最短路径)
- apache服务的基本概念(DSO、MPM)
- 第五周项目2游戏中的角色类
- 使用ViewFlipper实现图片自动切换,并支持手势滑动切换
- Python图像处理之边缘检测
- 1010.一元多项式求导 (25)
- 删数问题
- J2EE的十三个标准
- BZOJ 1202: [HNOI2005]狡猾的商人
- JMeter Test Plan的组成部分之Thread Group
- 活动选择问题
- LeetCode OJ 之 GenerateParenthesis解题报告
- FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream流