图像处理(OpenCV)
文章平均质量分 66
分享数字图像处理的基本算法
阿兵-AI医疗
这个作者很懒,什么都没留下…
展开
-
图像相位谱的重要性
基本概念图像的傅里叶变换,也就是二维傅里叶变换,可以将图像从空间域转到频域中,从中我们可以分别求出幅度谱和相位谱。那对于一张图片,到底是幅度谱重要,还是相位谱更重要呢?我们做个小实验,一个保持幅频不变,相位为零,另一个保持幅频常数,相位不变。%读入图像image=imread('Lena.png');%转为灰度图image = rgb2gray(image);% 傅里叶变换imageFFT=fft2(double(image));%取幅度和相位imageFFTAmplitude=abs(原创 2021-12-20 18:59:54 · 2338 阅读 · 6 评论 -
目标跟踪之Camshift
基本概念camshift("continuously adaptive mean-shift"的缩写),即连续自适应的 算法。其基本思想是对视频序列的所有图像帧都作MeanShift运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值,如此迭代下去。简单点说,meanShift是针对单张图片寻找最优迭代结果,而camShift则是针对视频序列来处理,并对该序列中的每一帧图片都调用meanShift来寻找最优迭代结果。正是由于camShift针对一个视频原创 2021-04-05 19:58:26 · 961 阅读 · 0 评论 -
图像分割之分水岭分割算法
基本思想分水岭(watershed)是地形学中的一个经典概念,例如美国落基山脉分水岭,将美国分为两个区域,落在这个分水岭一边的雨滴,最终会到达大西洋,但是落在另一边的雨滴,最终回流到太平洋。为了提取分水岭,人们提出了各种各样的算法,在这些算法中,Vincent和Soille提出了一种基于模拟沉浸的实现方法。在图像处理领域,灰度图像可以被视为地形表面,图像中每个像素的灰度代表这点的高度,其每一个局部极小值(local minima)及其影响区域成为集水盆地(catchments basin)。这样分水岭便被原创 2021-04-05 16:51:44 · 912 阅读 · 2 评论 -
图像分割之最大熵阈值分割
最大熵阈值分割法和OTSU算法类似,假设将图像分为背景和前景两个部分。熵代表信息量,图像信息量越大,熵就越大,最大熵算法就是找出一个最佳阈值使得背景与前景两个部分熵之和最大。基本原理频率和概率直方图每个矩形框的数值描述的是图像中相应灰度值的频率。因此,可以说直方图是一种离散的频率分布。给定一个大小为M*N的图像I,直方图中所有矩形框所代表的数值之和,即为图像中的像素数量,即:相对应的归一化直方图表示为:0<=i<K 通常被解释为一个随机过程的概率分布或概率密度函数,表示的是图像中.原创 2021-04-03 11:11:36 · 4265 阅读 · 1 评论 -
导向滤波
基本原理导向滤波(Guided Fliter)显式地利用 guidance image 计算输出图像,其中 guidance image 可以是输入图像本身或者其他图像。导向滤波比起双边滤波来说在边界附近效果较好;另外,它还具有 O(N) 的线性时间的速度优势。细节请查阅论文《Guided Image Filtering》除了速度优势以外,导向滤波的一个很好的性能就是可以保持梯度,这是bilateral做不到的,因为会有梯度翻转现象。(Preserves edges, but not gradient原创 2021-03-28 13:22:21 · 2055 阅读 · 0 评论 -
非局部均值去噪
基本原理该算法来自论文《A non-local algorithm for image denoising》去噪属于图像复原的范畴,通常使用滤波来实现,并且往往是低通(平滑噪声)滤波器。对于单帧图像去噪,使用空间邻域像素来处理,对于多帧图像去噪,则可以考虑时空域相结合的方法,即时间+空间的3DNR方法。简单的平滑滤波器有均值滤波器、高斯滤波器,算法复杂度低,但会导致图像模糊,双边滤波器是性能较好的非线性滤波器,在去噪的同时,保留了较强的纹理细节,缺点是弱的纹理被滤掉了。非局部均值(Non Local M原创 2021-03-28 13:10:10 · 743 阅读 · 0 评论 -
图像复原之维纳滤波
基本原理图像复原是图像处理的重要组成部分,由于图像在获取和传输过程中通常不可避免的要受到一些噪声的干扰,因此在进行其他图像处理以及图像分析之前,应该尽量将图像复原到其原始真实状态。图像复原的关键问题是在于建立退化模型。图像退化模型如下:维纳滤波器是一种自适应最小均方误差滤波器,它最终的目的是使得复原图像和原始图像的均方误差最小。省去推导过程,给出频率的维纳滤波公式示例演示在下面例子中,我们对退化函数进行了简化,将退化函数置为1,因此维纳滤波公式简化为:#include <opencv2原创 2021-03-28 12:59:43 · 3863 阅读 · 1 评论 -
图像配准之相位配准
基本原理图像配准是图像处理的基本任务之一,用于将不同时间、不同传感器、不同视角及不同拍摄条件下获取的关于同一目标或场景的两幅或多幅图像进行主要是几何意义上的匹配套和的过程。图像配准的基本问题是找出一种图像转换方法,用以纠正图像的形变。造成图像形变的原因多种多样,例如对于遥感图像而言,传感器噪声、由传感器视点变化或平台不稳定造成的透视变化、被拍摄物体的移动、变形或生长等变化、闪电和大气变化,以及阴影和云层遮盖都使图像产生不同形式的形变。正是图像形变原因和形式的不同决定了多种多样的图像配准技术。图像配准方法原创 2021-03-28 10:30:26 · 2914 阅读 · 0 评论 -
形态学之灰度形态学
与二值形态学相对应另一种形态学运算是灰度形态学。灰度形态学与二值形态学相比,不仅在图像本身的空间尺寸上有一个变化,而且图像本身的灰度值也会发上变化。灰度膨胀(Grayscale Dilation)运算灰度形态学膨胀,在数学上的定义,可以用如下公式表示:根据公式,对灰度形态学可以简单理解为,对于原始图像F中(m, n)坐标的灰度值,分别向右移动(a, b)个单位,再加结构化元素K(a, b)的值,再取其求得的最大值。为了更加直观地了解灰度膨胀的运算过程,假设有一个一维的灰度分布列表和一个一维的结.原创 2021-03-28 10:25:51 · 4371 阅读 · 0 评论 -
双边滤波
基本原理双边滤波是《Bilateral Filtering for Gray and Color Images》论文提出的一种非线性滤波。它是一种结合图像的空间邻近度和像素相似度的折中处理,同时考虑空域信息和像素值相似性,从而达到去噪的同时保留边缘。原理是其滤波器的核由一个与空间距离相关的高斯函数与另一个与像素值距离相关的高斯函数相乘生成。所以对于高斯滤波,仅仅用到空间距离的权重系数核与图像卷积确定中心点的像素。即离中心点越近的点,其权重系数越大。双边滤波加入像素值信息的权重,即在邻域内像数值越接近中原创 2021-03-14 17:22:22 · 997 阅读 · 0 评论 -
图像分割之大津法Otsu
基本概念 大津法(简称Otsu)由1979年由日本学者大津提出的,是一种自适应阈值确定的方法,相关文献链接。它是根据图像的灰度特性, 将图像分为前景和背景两个部分,当取最佳阈值时,二者之间的方差应该是最大的。论文精华如下。 &nb...原创 2020-02-04 13:15:40 · 3687 阅读 · 0 评论 -
小波之小波变换
基本概念 小波变换(wavelet transform)是指用有限长或快速衰减的“母小波”(mother wavelet)的振荡波形来表示信号。该波形被缩放和平移以匹配输入的信号。小波变化的发展,承袭Gabor transform的局部化思想,并且克服了傅里叶和Gabor transform的部分缺陷,...原创 2019-08-18 21:04:08 · 2381 阅读 · 2 评论 -
形态学图像处理之边界提取与跟踪
边界提取 要在二值图像中提取物体的边界,容易想到的一个方法是将所有物体内部的点删除(置为背景色)。具体地说,可以逐行扫描图像,如果发现一个黑点的8个邻域都是黑点,则该点为内部点,在目标图 像中将它删除。实际上这相当于采用一个3*3的结构元素对原图进行腐蚀,使得只有那些8个邻域都有黑点的内部点被保留,再用...原创 2019-08-11 22:07:58 · 7088 阅读 · 1 评论 -
图像分割之图割(Graph Cut)
基本概念 这里介绍一种用于n维图像数据的边界优化和区域分割的分割技术。该分割算法来自论文:Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images。该方法通过交互式的或自动...原创 2019-08-11 11:09:15 · 9082 阅读 · 2 评论 -
6.x图像识别之支持向量机(SVM)
支持向量机 支持向量机(support vector machine, SVM)是在统计学习理论的基础上发展起来的新一代学习算法。它在文本分类、手写识别、图像分类、生物信息学等领域中获得较好的应用。相比于容易过度拟合训练样本的人工神经网络,支持向量机对于未见过的测试样本具有更好的推广能力。 ...原创 2019-05-26 22:26:18 · 2853 阅读 · 0 评论 -
频率域滤波
最近正好有个朋友创业,找我实现个算法,正好用到离散傅里叶变换。实现后,正好把以前相关的笔记整理完。频域滤波空间域和频率域为我们提供了不同的视角。在空域中,数字图像f(x,y)为一个定义在二维空间中的矩形区域上的离散函数;换一个角度,,如果将f(x,y)视为幅值变化的二维信号,则可以通过某些变换手段(如傅里叶变换、离散余弦变换、沃尔什变换和小波变换等)在频域下对它进行分析。离散傅里叶变化情况下...原创 2018-12-30 15:28:10 · 884 阅读 · 0 评论 -
图像傅里叶变换(二维离散傅里叶变换)
图像傅里叶变换二维离散傅里叶变换是将图像从空间域转至频域,在图像增强、图像去噪、图像边缘检测、图像特征提取、图像压缩等等应用中都起着极其重要的作用。理论基础是任意函数都可以表示成正弦函数的线性组合的形式。公式如下逆变换公式如下令 R(u,v) 和 I(u,c) 分别表示 F(u,v) 的实部和虚部。幅度谱为相位谱为指数表示功率谱为示例演示首先我们演示下,从一幅图像得到...原创 2018-12-30 15:24:17 · 16800 阅读 · 0 评论 -
6.1图像识别之人工神经网络原理
一、理论知识 人工神经网络(Artificial Neural Networks, ANN)也简称为神经网络(NN)是对人脑或生物神经网络若干基本特性的抽象和模拟。它为从样本中学习值为实数、离散值或向量的函数提供了一种健壮性很强的解决方案。 二、图说BP网络神经网络的结构 神经网络的网络结构由输入层,隐含层,输出层组成。隐含层的个数+输出层的个数=神经网络的层数,也就是说...原创 2018-09-16 15:11:21 · 4425 阅读 · 0 评论 -
4.2图像分割之区域分裂与合并
区域分裂与合并 区域生长是从一组生长点开始的,另一种方法是在开始时将图像分割成一系列任意不相关的区域,然后将它们合并或者拆分以满足限制条件,这就是区域分裂与合并。通过分裂,可以将不同特征的区域分离开,而通过合并,可以将相同特征的区域合并起来。(1) 分裂 令R表示整个图像,P代表某种相似性准则。一种区域分裂方法是首先将图像等分为4个区域,然后反复将分割得到的子图像再次分为4个区...原创 2018-08-05 15:20:34 · 21329 阅读 · 4 评论 -
4.1图像分割之区域生长法
我们将讨论以区域为基础的图像分割处理技术。传统的区域分割方法有区域生长和区域分裂与合并, 其中最基础的是区域生长法。区域生长法 区域生长是根据事先定义的准则将像素或者子区域聚合成更大区域的过程。其基本思想是从一组生长点开始(生长点可以是单个像素,也可以是某个小区域),将与该生长点性质相似的相邻像素或者区域与生长点合并,形成新的生长点,重复此过程直到不能生长为止。生长点和相似区域...原创 2018-08-04 16:37:39 · 54966 阅读 · 25 评论 -
4.0图像分割概述
图像分割 图像分割是将图像中具有特殊意义的不同区域划分开来,这些区域互不相交,每个区域满足灰度、纹理、彩色等特征的某种相似准则。图像分割是图像分析过程中最重要的步骤之一,分割处的区域可以作为后续特征提取的目标对象。图像分割分类 图像分割算法的方法和种类非常多,一般基于图像灰度值的不连续性或其相似性。不连续性是基于图像灰度的不连续变化分割图像,如针对图像的边缘由边缘检测、边缘跟踪...原创 2018-08-04 15:50:08 · 906 阅读 · 0 评论 -
2.3距离度量方法
距离度量方法假设对于像素P(Xp,Yp), Q(Xq,Yq),R(Xr,Yr)而言,若函数D满足如下三个条件,则函数D可被称为距离函数或度量。 1、D(P,Q)>=0,当且仅当P=Q时有D(P,Q) = 0 2、D(P,Q) = D(Q,P) 3、D(P,Q) =< D(P,R) + D(R,Q)常见的几个距离函数有1、欧式距离 其距离等于r的像素形成以...原创 2018-06-30 23:53:13 · 2923 阅读 · 0 评论 -
2.2访问图像像素
前面提到图像处理最基本的是操作图像的像素,学会如何存取其像素,是一切编写图像处理应用的基础。我们通过实现在图像中加入椒盐噪点来说明三种访问像素的方式。椒盐噪点是一种特殊的噪点,顾名思义,它随机地将部分像素设置为白色或黑色。在传输过程中,如果部分像素值丢失,那么这种噪点就会出现。在我们的代码里,将随机挑选若干像素,并将其设置为白色。直接访问像素 为了访问像素,需要在代码中指定像素 ...原创 2018-06-30 23:44:50 · 467 阅读 · 1 评论 -
2.1图像表示类Mat
OpenCV Mat类 无论什么数字图像处理,最基本的操作对象是图像的基本元素,即像素。Mat类是OpenCV中基础图像容器类。从根本上来说,一张图像是一个由数值组成的矩阵。这也是OpenCV2用cv::Mat这个数据结构来表示图像的原因。矩阵的每一个元素代表一个像素。对于灰度图像(仅包含“灰色”的图像)而言,像素由8位无符号数来表示,其中0代表黑色,255代表白色。对于彩色图像而言,每个像...原创 2018-06-30 22:01:25 · 440 阅读 · 0 评论 -
2.0什么是数字图像
数字图像数字图像就是能够在计算机上显示和处理的图像,根据其特性可分为两大类——位图和矢量图。位图通常使用数字阵列来表示,常见格式有BMP、JPG、GIF等;矢量图由矢量数据库表示,我们接触最多的是PNG图像。一个大小为M*N的数字图像是由M行N列的有限元素组成的,每个元素都有特定的位置和幅值,代表了其所在行列位置上的图像物理信息,如灰度和色彩等。这些元素称为图像元素或像素。数字图像的表示...原创 2018-05-27 22:56:05 · 2174 阅读 · 0 评论 -
1.5OpenCV官方示例学习
OpenCV官方示例 OpenCV作为一个在全球使用人数众多的计算机视觉库,官方已经准备了大量的示例程序,供大家学习。官方提供的示例代码具体位于…\opencv\sources\samples目录下,如下图所示: 通过观察文件名不难发现,OpenCV官方提供了Android、C、C++、GPU、Python等众多版本的示例程序。而名为cpp的文件夹则存放着新版本的C++示例程序。...原创 2018-05-27 22:46:58 · 4014 阅读 · 0 评论 -
1.4highgui模块介绍
HighGUI OpenCV将与操作系统、文件系统和摄像机之类的硬件进行交互的一些函数纳入HighGUI(high-level graphical user interface)库中。HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。本文介绍如何显示图像和播放视频。图像显示 在前面介绍如何创建项目时,就...原创 2018-05-27 22:39:35 · 673 阅读 · 0 评论 -
1.2使用Qt创建OpenCV项目
本文介绍在Win7 64位电脑上利用Qt创建OpenCV项目。Qt是一个完整的C++集成开发环境(IDE)。Qt的安装这里就不介绍了。创建项目 运行Qt Creator,新建一个新的项目。如下图所示。 创建完一个空的控制台应用,如下图所示。 Qt生成的代码创建了一个QCoreApplication对象,并调用它的exec()方法。这只有在应用程序需要事件处理器...原创 2018-04-16 14:23:54 · 4881 阅读 · 1 评论 -
1.0安装OpenCV库
本文将介绍如何进行OpenCV库的安装。安装方式 你会发现一般有两种安装,一是直接下载exe安装;二是下载源代码自己用CMake编译。一般情况下,如果我们的开发环境和exe相符合,直接下载exe安装。比如说截止2018.02.26最新的是opencv-3.4.0-vc14_vc15.exe,如果你安装的vc14或vc15就是相符合的,否则安装编程会有一些问题。如果你选择的Open...原创 2018-04-15 16:27:22 · 3441 阅读 · 0 评论 -
0.图像处理系列导航
南京是一座美丽的文化古城,她给了我很多美好回忆。南京 带不走的只有你! 随着AR和VR的的兴起,图像处理和计算机图形学越来越重要。打算分享自己用OpenCV学习图像处理的笔记。学习时用MFC作为开发界面,这次打算用 Qt重新编程整理以前的笔记。系列导航OpenCV简介配置OpenCV+VS2013开发环境...原创 2017-03-19 17:40:17 · 1149 阅读 · 0 评论 -
1.1使用VS2015创建OpenCV工程
安装完OpenCV后,我们还需要一个顺手的开发环境(IDE),一般推荐微软的Visual Studio及开源的C++开发工具Qt。 本文介绍在Win7 64位电脑上利用MS Visual Studio创建OpenCV工程。创建OpenCV工程1、创建工程 新建一个【Win32 Console Application】,如下图所示。我们需要指定项目创建的位置以及项目的名...原创 2017-03-19 22:14:33 · 1648 阅读 · 0 评论 -
1.3OpenCV简介
本文简单介绍OpenCV库。一、OpenCV OpenCV(Open Source Computer Vision)是一个开发源代码的图像及视频分析库,包含很多优化过的算法。OpenCV最初是由Intel的一个小组进行开发的,1.0版本于2006面世。第二次重要的版本发布是2009年的OpenCV 2。二、模块介绍自版本2.2开始,OpenCV库被划分为多个模块。这些模...原创 2017-03-19 20:17:19 · 1179 阅读 · 0 评论 -
图像分割之主动轮廓线模型Snake
基本概念1987年由 Kass 等人提出的主动轮廓模型即蛇模型(snake 模型)。活动轮廓模型可以用在图像分割和理解中,也适用于分析动态图像或三维图像。Snake定义为最小的能量样条曲线。下面重点介绍Kass的《Snakes:active contour models》这篇论文。设v(s)=[x(s),y(s)]为活动轮廓线,s∈[0, 1]是弧长,其能量函数为:其中Eint表示曲线因为...原创 2019-09-21 21:16:51 · 5049 阅读 · 0 评论 -
图像分割之Snake主动轮廓模型(Matlab代码)
示例演示 如果在中文搜索的话,一般会找到《数字图像处理-图像分割:Snake主动轮廓模型 Matlab代码及运行结果》。里面有句代码,千万别用,否则出不来效果。(别问我怎么知道的)% 转化为双精度型%I = im2double(I); &...原创 2019-09-21 21:10:20 · 5407 阅读 · 8 评论 -
图像分割之cvSnakeImage
基本概念 OpenCV之前有个cvSnakeImage函数实现了Snakes活动轮廓模型,但是cvSnakeImage函数在opencv2中已经被去掉。由于没有无法得知其依据的论文,这里根据源代码简单介绍它的原理。遍历每个轮廓的点,计算该点邻域内每个点的能量E,将能量最小的点代替当前点。E= alpha...原创 2019-09-14 19:57:51 · 1397 阅读 · 0 评论 -
图像处理之高斯滤波的几种实现方式
基本概念 在图像处理中,高斯滤波一般用高斯模板。除此之外,还有递归高斯滤波、FFT法、重复卷积法等。1、直接卷积法2、重复卷积法3、FFT实现法 原理很简单out = IFFT2(FFT(in)*...原创 2019-09-08 22:17:24 · 7735 阅读 · 3 评论 -
图像分割之霍夫变换
基本概念 我们都知道一些边缘检测的有效方法,但是实际中由于噪声和光照不均等因素,使得在很多情况下获的边缘点不连续,必须通过边缘连接将它们转换为有意义的边缘。一般的做法是对经过边缘检测的图像进一步使用连接技术,从而将边缘像素组合成完整的边缘。霍夫(Hough)变换是一个非常重要的检测间断点边界形状的方法。...原创 2019-09-07 22:01:58 · 1218 阅读 · 0 评论 -
形态学图像处理之凸壳
基本概念 如果连接物体A内任意两点的直线段都在A的内部,则称A是凸的。任意物体A的凸壳是包含A的最小凸物体。像素化操作首先需找到二值图像中所有的连通区域,然后用这些区域质心作为这些连通分量的代表,即将一个连通 区域像素化位于区域质心的一个像素。我们总是希望像素化算法能够找到物体的质心来代表该物体,但在实...原创 2019-09-02 21:59:19 · 5917 阅读 · 4 评论 -
形态学图像处理之细化算法
基本概念 “骨架”是指一幅图像的骨骼部分,它描述物体的几何形状和拓扑结构,是重要的图像描绘子之一。计算骨架的过程一般称为“细化”或“骨架化”,在包括文字识别、工业零件形状识别以及印刷电路板自动检测在内的很多应用中,细化过程都发挥这关键作用。通常,对我们感兴趣的目标物体进行细化有助于突出目标的形状特点和拓...原创 2019-09-01 19:51:41 · 6262 阅读 · 4 评论 -
形态学图像处理之连通分量提取
基本概念 提取连通分量的过程实际上也是标注连通分量的过程,通常的做法是给原图像中的每个连通区分配一个唯一代表该区域的编号,在输出图像中该连通区内的所有的像素值就赋值为该区域的编号,我们将这样的输出图像称为标注图像。这里介绍一种基于形态学的膨胀操作的提取连通分量的方法。 &nbs...原创 2019-09-01 17:11:33 · 8537 阅读 · 0 评论