camera脏污检测算法

2023-10-13 03:40
文章标签 算法 检测 camera 脏污

本文主要是介绍camera脏污检测算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.脏污检测算法类型

1.1目前我知道的检测算法(opencv halcon c++):

1.1.1空域检测

将图像分块检测每块与周围的亮度差,然后将亮度差大的进行连接,组成污点块簇,这种检测算法需要将图像分成多种不同网格大小的图像,计算量较大,即便这样,还是会有部分污点落下。适合2010年之前的摄像头图像品质要求。现在已经很少使用了。低端安防行业还在使用。

1.1.2高通滤波

针对边缘明显的污点较为有效,但浅污点效果不好。

1.1.3带通滤波

频域带通滤波,先频域检测中频污点,然后空域计算反差亮,设置阈值进行管控。

效果如下:

sdf
原始图
阈值A检测
阈值B检测

 写在最后,非公益项目,需要合作请联系。

附脏污检测背景:

传统摄像模组的组装生产和指标检测主要依赖人工手工操作、肉眼判断,随着工作时间加长,工人的生产效率会下降、误差率会上升,而且生产成本也比较高。这样的生产流程与工艺,对于高品质产品的一致性保证是一个很大的问题。面对未来消费电子产品对于高品质模组的要求以及指数级增长的产品数量市场需求,传统模组生产工艺很难满足挑剔的客户。要想在严峻的市场竞争中保持竞争力,自动化、批量化、标准化的生产工艺势在必行。虽然,摄像模组检测在韩国、日本等国有一些相关的设备,但是价格非常高昂,完全引进国外设备对国内的摄像模组生产企业有很重负担。因此,对这类摄像模组检测的设备的国产化研发很有必要,这将对我国国民经济发展以及从中国制造向中国智造的转型升级有重要意义。

附一段类似的代码吧,思路可以,不过我的与此代码差别很大

Halcon -表面瑕疵脏污检测
1、拿到一张图片,我们在看到Halcon例子中有一篇find_Scratches_bandpass_fft.dev。其中就讲到了核心的几个算子,用来对空间图像转变成频域的图像。即进行傅里叶变换。
例子中在读入一张图片,进行预处理使用gauss_filter图像平滑,然后进行的正弦带通滤波。gen_sin_bandpass(ImageFilter,Frequency,Norm,Mode,Width,Height)Frequency指的是频率0-1之间。Norm因子归一化方式:‘n’或‘none’。Mode决定滤波器的DC-trem在哪里或者滤波器是否可以在实数快速傅里叶变换中使用。剩下的参数是图片的宽和高。
一般还可以使用两个,注意是两个下面的算子,得到的输出图片相减,输出的图片,形成带通滤波。gen_gauss_filter(ImageGuass,sigma1,sigma1,0,‘none’,‘rft’,width,height)来代替正弦带通滤波。在halcon关于这个算子的介绍中,有这么一句话需要注意 If fft_image and fft_image_inv are used for filtering, Norm = ‘none’ and Mode = ‘dc_center’ must be used. If rft_generic is used, Mode = ‘rft’ must be used.
2、下面进行对图像做实数快速傅里叶变换
rft_generic(输入的byte图像即先前高斯平滑的图像,输出图像格式complex也就是ImageFFT, ‘to_freq’, ‘none’, ‘complex’, Width) 其中输出图片的大小是(w/2+1)h。与卷积后再反傅里叶变换图片大小相对应
3、根据一个滤波器对图像在频域做卷积。图像用上面生成的正弦滤波器做一次卷积。convol_fft(ImageFFT,ImageBnadpass,ImageConvol)
4、反傅里叶变换,其中的参数改为‘from_freq’。此时输出图像大小计算为2w-2
5、形态学分离出划痕。
 

这篇关于camera脏污检测算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200512

相关文章

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1