GOCVHelper主要包含图像处理、图像增强和基础文件处理三个部分。由于前两个部分较具有通用性,而且我在不同项目中都进行了反复使用,为了进一步说明类库内容,这里反过来从项目角度出发,对现有的类库进行整理;
第三个部分,增加的是从OpenCV角度出发,哪些和处理增强相关的代码在实际项目过程中得到充分使用的。
一、轮廓处理
边界是图像处理的重要部分,所以轮廓处理肯定是图像处理中的重要内容,这里的操作,主要是为了获得“量化”的结果。
(一)轮廓的筛选
1、FindBigestContour 以及 FindnthContour(寻找最大的轮廓和寻找第N大的轮廓)
2、selectShapeArea 、selectShapeCircularity(根据轮廓的面积和圆度进行选择)
3、connection2(寻找并绘制出彩色联通区域)
(二)轮廓的处理
4、getOrientation(获得主要方向,在图上进行标绘)
5、projection2(投影到x或Y轴上)
(三)杂项
7、SmoothEdgeSingleChannel(轮廓柔化)
二、图像增强
这里所谓的“图像增强”,简单来说,输入和输出都是图像。增强可以作为下一步识别的输入,也可以直接作为结果存在。根据输入的图像是3通道彩色图像还是灰白图像进行简单区分.
(一)3通道彩色图像
1、multiScaleSharpen(多尺度图像增强)
2、moveLightDiff(顶帽去光差)
3、translucence、mosaic(rect区域半透明和马赛克)
- EasyPR https://gitee.com/liuruoze/EasyPR
4、GetHsVDistance(基于颜色直方图的距离计算)
5、Multiply、Color_Burn、Linear_Burn(正片叠底、颜色加深、线性增强)
6、EnhanceSaturation(饱和度提升)
(二)灰色图像增强
7、thin(细化算法)
8、ACE(图像局部对比度增强算法)
9、LocalNormalization(LN算法)
10、barcodeErode(条码专用腐蚀)
三、其它处理和增强代码
1、adaptiveThreshold 相对于一般的阈值化操作,当图像中出现较大明暗差距时,自适应阈值时非常有效的
2、fastNlMeansDenoising 对椒盐噪声中值滤波效果比较好,对高斯噪声非局部均值去噪效果比较好
3、equalizeHist 经典的全局直方图均衡,无需更多说明
4、CLAHE 经典的局部上下门限直方图处理,可惜OpenCV的实现好像差点意思
5、dft 傅里叶变换的最大价值在于将图像处理扩展到频率域,从而引入了很多新方法。
相关代码已经被OpenCV收录:/samples/cpp/tutorial_code/ShapeDescriptors/pointPolygonTest_demo.cpp