GOCVHelper图像处理算法库实例整编
GOCVHelper主要包含图像处理、图像增强和基础文件处理三个部分。由于前两个部分较具有通用性,而且我在不同项目中都进行了反复使用,为了进一步说明类库内容,这里反过来从项目角度出发,对现有的类库进行整理;
第三个部分,增加的是从OpenCV角度出发,哪些和处理增强相关的代码在实际项目过程中得到充分使用的。
一、轮廓处理
边界是图像处理的重要部分,所以轮廓处理肯定是图像处理中的重要内容,这里的操作,主要是为了获得“量化”的结果。
(一)轮廓的筛选
1、FindBigestContour 以及 FindnthContour(寻找最大的轮廓和寻找第N大的轮廓)
- 《寻找复杂背景下物体的轮廓(OpenCV / C++ - Filling holes)》 https://www.cnblogs.com/jsxyhelu/p/16947889.html
- 《如何寻找第二大轮廓》 https://www.cnblogs.com/jsxyhelu/p/16947922.html
2、selectShapeArea 、selectShapeCircularity(根据轮廓的面积和圆度进行选择)
- 《选择轮廓(select_shape)》https://www.cnblogs.com/jsxyhelu/p/16948117.html
- 《通过轮廓的圆度分析实现孔洞提取》https://www.cnblogs.com/jsxyhelu/p/16947958.html
3、connection2(寻找并绘制出彩色联通区域)
- 《如何判断轮廓是否为圆(包含联通区域处理)》 https://www.cnblogs.com/jsxyhelu/p/16947817.html
- 《工业视觉检测项目的算法实现》 https://www.cnblogs.com/jsxyhelu/p/16997985.html
(二)轮廓的处理
4、getOrientation(获得主要方向,在图上进行标绘)
- 《如何获得物体的主要方向》https://www.cnblogs.com/jsxyhelu/p/16947974.html
- 《对OpenCV中“旋转”的思考和实验》https://www.cnblogs.com/jsxyhelu/p/16947900.html
5、projection2(投影到x或Y轴上)
- 《OpenCV图像处理中“投影技术”的使用》 https://www.cnblogs.com/jsxyhelu/p/16947785.html
- 《识别复杂的答题卡1(主要算法)》https://www.cnblogs.com/jsxyhelu/p/16947886.html
(三)杂项
7、SmoothEdgeSingleChannel(轮廓柔化)
- 《AnswerOpenCV(0416)一周佳作欣赏》https://www.cnblogs.com/jsxyhelu/p/16998073.html
二、图像增强
这里所谓的“图像增强”,简单来说,输入和输出都是图像。增强可以作为下一步识别的输入,也可以直接作为结果存在。根据输入的图像是3通道彩色图像还是灰白图像进行简单区分.
(一)3通道彩色图像
1、multiScaleSharpen(多尺度图像增强)
- 《多尺度的图像细节提升multiScaleSharpen实现方法》https://www.cnblogs.com/jsxyhelu/p/16998265.htm
2、moveLightDiff(顶帽去光差)
- 《寻找复杂背景下物体的轮廓(OpenCV / C++ - Filling holes)》 https://www.cnblogs.com/jsxyhelu/p/16947889.html
3、translucence、mosaic(rect区域半透明和马赛克)
- EasyPR https://gitee.com/liuruoze/EasyPR
4、GetHsVDistance(基于颜色直方图的距离计算)
- 《花40分钟写一个-CBIR引擎-代码公开》 https://www.cnblogs.com/jsxyhelu/p/16998648.html
5、Multiply、Color_Burn、Linear_Burn(正片叠底、颜色加深、线性增强)
- 《基于OpenCV实现Photoshop的17种图层混合》 https://www.cnblogs.com/jsxyhelu/p/16947810.html
- 《img = img1*mask + img2*(1-mask) How do that ?》 https://www.cnblogs.com/jsxyhelu/p/16948006.html
6、EnhanceSaturation(饱和度提升)
- 《OpenCV实现"你的名字"滤镜》 https://www.cnblogs.com/liuboblog/p/12026925.html
(二)灰色图像增强
7、thin(细化算法)
- 《将GOCVHelper推向opencv——关于thinning函数的探索》https://www.cnblogs.com/jsxyhelu/p/16998736.html
8、ACE(图像局部对比度增强算法)
- 《局部标准差实现对比度增强(ACE)》 https://www.cnblogs.com/jsxyhelu/p/16948105.html
9、LocalNormalization(LN算法)
- 《LocalNormalization算法原理、实现和在视频处理中震铃效果的发现和去除》 https://www.cnblogs.com/jsxyhelu/p/16998753.html
10、barcodeErode(条码专用腐蚀)
- 《从条码识别中学习到的(来自课程《OpenCV计算机视觉产品实战2》)》https://www.cnblogs.com/jsxyhelu/p/16998848.html
三、其它处理和增强代码
1、adaptiveThreshold 相对于一般的阈值化操作,当图像中出现较大明暗差距时,自适应阈值时非常有效的
2、fastNlMeansDenoising 对椒盐噪声中值滤波效果比较好,对高斯噪声非局部均值去噪效果比较好
3、equalizeHist 经典的全局直方图均衡,无需更多说明
4、CLAHE 经典的局部上下门限直方图处理,可惜OpenCV的实现好像差点意思
5、dft 傅里叶变换的最大价值在于将图像处理扩展到频率域,从而引入了很多新方法。
6、distanceTransform 《Finding distance between two curves》 代码富有弹性、函数应用合理 https://www.cnblogs.com/jsxyhelu/p/16948034.html
7、pointPolygonTest 《如何寻找已知轮廓的最大内接圆》https://www.cnblogs.com/jsxyhelu/p/16948017.html
相关代码已经被OpenCV收录:/samples/cpp/tutorial_code/ShapeDescriptors/pointPolygonTest_demo.cpp
8、图像局部特征点检测算法综述 https://www.cnblogs.com/jsxyhelu/p/16947972.html 特征点提取在“目标识别、图像拼接、运动 跟踪、图像检索、自动定位”等研究中起着重要作用;我们这里通过一个综合实验来对OpenCV提供的特征提取方法进行比对。