
图像处理
深海沙砾
无所从来,无所从去。应如是住,如是降伏其心。
展开
-
OpenCV同态滤波
同态滤波原理简而言之,图像的同态滤波是基于以入射光和反射光为基础的图像模型上的,如果把图像函数F(x,y)表示为光照函数,即照射分量i(x,y)与反射分量r(x,y)两个分量的乘积,那么图像的模型可以表示为F(x,y)= i(x,y)*r(x,y)。通过对照射分量i(x,y)和反射分量r(x,y)的研究可知,照射分量一般反映灰度的恒定分量,相当于频域中的低频信息,减弱入射光就可以起到缩小图像灰度范围原创 2016-11-27 20:41:32 · 8358 阅读 · 9 评论 -
形状识别之直线检测
形状识别中常见的即是矩形框的识别,识别的主要步骤通常是:图像二值化,查找轮廓,四边形轮廓筛选等。当识别的目标矩形有一条边被部分遮挡,如图1所示,传统的识别方法就不能达到识别的目的。 图1在这里,提供一种识别的思路,仅供参考。识别的最终目标就是想识别出身份证的四条边,通过计算四条边的交点最后得到四边形的轮廓。主要涉及的问题有如下几点:直线检测直线聚类直线筛选交点计算交点排序原创 2017-07-10 14:13:38 · 14338 阅读 · 33 评论 -
数字图像EXIF信息之Jhead
前言在OpenCV相机标定中,有如下公式: 其中fx,fyf_x,f_y是以像素表示的焦距,属于相机内参的一部分。 一般可通过相机标定,估计相机内参。此外还有一种方式进行估计,公式如下:focal_length_in_pixels=(image_width_in_pixels)∗(focal_length_in_mm)/(CCD_width_in_mm)focal\_length\_in\_pi原创 2017-11-19 20:40:05 · 1313 阅读 · 0 评论 -
直线检测之极坐标表示
直线检测算法LSD有比较好的效果,相比Hough变换检测直线更高效,然而有个缺点是同一条直线上的线段会断开,此时想到将检测到的直线转化为极坐标表示,然后根据极坐标的相似程度对线段合并。这里图像上的直线与极坐标下角度的范围有着怎样的对应关系? 图像的坐标系Y轴向下,所以并不能直观地得到答案。为此,写个小程序,来获得极坐标系下直线表示的角度与直线斜率的关系。取图像中心点为原点,以图像宽度的1/4为半径,原创 2017-06-29 00:34:48 · 6355 阅读 · 7 评论 -
【OpenCV】贝叶斯之肤色分割模型
利用公开肤色数据集训练了一个肤色分类器,OpenCV中有现成的方法,拿来即用。在实际项目中应用,自制数据样本会更有效。Talk is cheap. Show you the code.#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <op...原创 2018-03-25 22:38:36 · 2241 阅读 · 3 评论 -
FreeImage 生成带透明通道的GIF
主要方法: 1. 加载图像及读取参数 FreeImage_Load FreeImage_GetWidth FreeImage_GetHeight FreeImage_Allocate FreeImage_GetPixelColor FreeImage_SetPixelColor 2. 保存GIF FreeImage_OpenMultiBitmap FreeImage_SetM...原创 2018-06-12 02:39:46 · 4039 阅读 · 1 评论 -
Two-Pass算法——图像连通域分析
在处理二值图像,提取感兴趣目标时经常需要通过连通域的大小对候选目标进行初步筛选。OpenCV中findContour 方法可以返回轮廓并能够计算轮廓面积。可其局限性在对于非凸多边形的面积计算是不准备的。 此时,利用连通域计算面积的方法更可靠,可findContour方法并不返回连通域结果。对于计算连通域基本方法主要有两种:1)Two-Pass法;2)Seed-Filling种子填充法; 参考...原创 2018-06-24 01:06:38 · 16535 阅读 · 4 评论 -
SeedFill——连通区域分析
Two-Pass方法计算二值图连通域效率比较低,补充下Seed Filling种子填充法,该方法类似于图的深度搜素。 这里还是参考了这篇文章OpenCV_连通区域分析。为了提高效率,做了一点修改。 针对新标签的第一个像素,其邻域只选取下方和后方未处理的邻域; 针对处理过的像素添加标识符,下次再碰到该像素时,可直接跳过。 具体代码:bool seedFill(...原创 2018-06-25 23:55:25 · 1944 阅读 · 0 评论 -
【聚类】ISODATA使用示例
Kmeans在进行样本聚类时,需要设定样本类别。ISODATA算法是在k-均值算法的基础上,增加对聚类结果的“合并”和“分裂”两个操作,并设定算法运行控制参数的一种聚类算法。因此,ISODATA是一种自适应聚类的算法。算法原理见聚类算法:ISODATA算法。这里给出ISODATA使用示例。首先,利用随机数生成待分类样本。给定一个圆的中心与半径,并设定样本点规模,生成二值样本。void ...原创 2018-07-03 00:56:47 · 6939 阅读 · 0 评论