标签:21 阈值 模糊 Laplacian OpenCV4 图像 算子 cv
原理简介
让图像的单一通道(大概灰度)和以下3 x 3的内核进行卷积
然后取相应的方差。
如果方差低于预先定义的阈值,则认为图像模糊;否则,图像不会模糊。
这种方法有效的原因是由于Laplacian算子本身的定义,它用于测量图像的二阶导数。
拉普拉斯算子突出显示图像中包含快速梯度变化的区域,很像Sobel和Scharr算子。和这些算子一样,Laplacian也经常用于边缘检测。
这里的假设是,如果一幅图像的方差较高,那么就说明图像有广泛的响应,包括类边和非类边,这是一幅正常的聚焦图像的代表。
但如果方差很低,那么就会有很小的响应扩散,这表明图像中几乎没有边缘。而图像越模糊,边缘就越少。所以可以用来检测是否模糊。
显然,这里的关键是设置正确的阈值,而阈值的设置与应用到的图像集相关。
如果阈值过低,你就会错误地将原本不模糊的图像标记为模糊。
如果阈值过高,那么实际上模糊的图像将不会被标记为模糊。这种方法只有在非常稳定的图像集(同一类型)中应用良好。
用法
示例代码,注意转换灰度图,但是我没转也没报错
import cv2 as cv image1 = cv.imread('imgs/tulips_1.jpg') image1 = cv.cvtColor(image1, cv.COLOR_BGR2GRAY) v1 = cv.Laplacian(image1, cv.CV_64F).var() image2 = cv.imread('imgs/melian.png') image2 = cv.cvtColor(image2, cv.COLOR_BGR2BGRA) v2 = cv.Laplacian(image2, cv.CV_64F).var() print(v1, v2) # 757.6573775277777 302.6699592172611
参考资料:
https://mp.weixin.qq.com/s/z8pob0V106fnjfJCLsTl3g 使用OpenCV进行模糊检测(拉普拉斯算子)
标签:21,阈值,模糊,Laplacian,OpenCV4,图像,算子,cv 来源: https://www.cnblogs.com/yanshw/p/15587091.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。