深入理解数字图像处理
文章平均质量分 72
这是本博客中图像处理方面的精华文章集合,专注经典图像处理算法的原理解析与编程实现,总计访问量已超七十余万,热门文章的主题包括(但不限于)自适应图像去噪、图像去雾(暗通道法、优化对比度法等)、抠图与图像融合(泊松编辑、贝叶斯法等)、对比度增强(CLAHE等)【订阅专栏,可从博主处获取补充代码!】
白马负金羁
数据挖掘 | 统计分析 | 图像处理 | 程序设计
展开
-
【订阅前必读】深入理解数字图像处理专栏的说明
这是本博客中图像处理方面的精华文章集合,专注经典图像处理算法的原理解析与编程实现,总计访问量已近百万,热门文章的主题包括(但不限于)自适应图像去噪、图像去雾(暗通道法、优化对比度法等)、抠图与图像融合(泊松编辑、贝叶斯法等)、对比度增强(CLAHE等原创 2021-02-02 08:11:51 · 8665 阅读 · 8 评论 -
深度学习之Autoencoder及其在图像去噪上的应用
自编码器(Autoencoder)是一种无监督的学习方法(更准确地用语应该是自监督),主要用于数据的降维或者特征的抽取。在作用上有点类似于PCA、字典学习,或者压缩感知。这里的数据降维,也可以理解为数据压缩,总之就是给高维的原始数据产生一个低维的表达,并要求这个低维表达最大程度地保持原始数据中的重要信息。本文基于Keras框架来演示构建Autoencoder的方法,及其在图像去噪领域的应用原创 2020-03-21 13:19:48 · 7734 阅读 · 2 评论 -
SIFT特征描述与检测的Matlab实现
尺度不变特征变换(SIFT)特征对旋转、尺度缩放、亮度变化等保持不变性,是非常稳定的局部特征。SIFT的主要思路是:首先构造图像的尺度空间表示,然后在尺度空间中搜索图像的极值点,由极值点再建立特征描述向量,最后用特征描述向量进行相似度匹配。本文将通过MATLAB代码来演示SIFT特征描述算法的原理原创 2021-12-20 05:54:01 · 1490 阅读 · 0 评论 -
SURF特征描述与检测的Matlab实现
SIFT特征描述算子在生成特征矢量时使用的是高斯图像,而SURF特征描述算子在生成特征矢量时用到的则是积分图。这样做的目的是为了充分利用特征点检测时形成的中间结果,也就是积分图,从而避免在特征矢量生成时对图像进行重复计算。本文将通过MATLAB代码来演示SURF特征描述算法的原理原创 2021-12-20 04:26:25 · 2690 阅读 · 0 评论 -
Python图像处理基本操作
在Python中进行图像处理可以使用的库有很多,本文主要介绍下面三个:OpenCV、PIL、 skimage。其中,OpenCV是图像处理中最强大的一个库,它的源代码是由C\C++写成的,所以原版的OpenCV可以与C、C++无缝结合。Python版的OpenCV主要依赖于cv2这个包来实现。Python里面自带一个PIL(python images library),但这个库现在已经停止更新了,所以使用Pillow,它是由PIL发展而来的原创 2019-03-14 06:20:12 · 18464 阅读 · 6 评论 -
Python图像处理之小波变换
小波变换或小波分析在很多领域中都有重要应用,例如石油勘探、数据压缩,以及接下来所要探讨的图像处理等。作为后续系列文章的铺垫,本文将主要介绍在Python中进行小波分析所需要用到的一个重要的软件包PyWavelets。关于小波的一些原理性的知识,请参考我已出版的《图像处理中的数学修炼》一书原创 2020-12-27 17:24:46 · 7105 阅读 · 19 评论 -
Python图像处理之小波去噪
在此前的文章中,我们讨论了在Python中利用pywt包提供的API对图像做小波分解的基本方法。小波变换在图像处理中的一个具体应用就是平滑去噪。后续我们还会从原理上讨论如何利用小波变换来设计图像去噪算法。但在此之前,本文将主要演示,利用Python中已有的API进行图像小波去噪的方法及效果原创 2020-12-28 04:44:26 · 13409 阅读 · 11 评论 -
Python图像处理之小波去噪原理:硬阈值VS软阈值
在之前的文章中,我们已经体验了在Python中利用小波变换对图像进行去噪的效果,本文将更加侧重其背后的原理。特别地,我们将理清软阈值与硬阈值等相关概念。首先,下面所示为利用小波变换对图像做去噪处理的一个基本框架原创 2021-01-02 17:43:47 · 6926 阅读 · 2 评论 -
Python图像处理之色彩量化(Color Quantization)、图像修复(Inpainting)
Python在数据科学、机器学习等领域已经被越来越广泛地使用。在做图像处理研究时,也可以考虑使用Python,因为它已经为我们准备了很多非常方便的package(而且都是免费的)。本文主要演示在Python中进行色彩量化,以及图像修复等操作的具体方法。图像色量化是利用人眼对颜色的惰性,将原图像中不太重要的相似颜色合并为一种颜色,减少图像中的颜色,而使量化前后的图像对于人眼的认识误差最小,即量化误差最小原创 2015-11-23 15:15:28 · 8518 阅读 · 5 评论 -
订阅图像处理专栏,获取完整代码
博客上关于数字图像处理与机器视觉方面的技术文章已有数百篇之多。笔者打算把个人编写或研究过的一些经典代码逐步整理,并进行系统化地管理及分享。本批代码全部由MATLAB编写,每个项目为一个完整的.zip压缩包,并提供有测试图片,争取做到一步到位、方便上手。这里提供的代码目录,可供索引查询之用...原创 2019-05-04 08:15:27 · 5903 阅读 · 35 评论 -
Jacobi迭代法与Gauss-Seidel迭代法
今天刚好有朋友和我讨论泊松图像融合算法,我说我过去文章里给出的是最原始、最直观的实现算法。对于理解泊松融合的原理比较有帮助,但是效率可能并不理想。印象中,泊松融合是有一个以矩阵为基础的快速算法的。但是过去我浅尝辄止了,也没深究,今天刚好再提到,小看了一下,似乎涉及高斯-塞德尔迭代法。这是一种常用的基于迭代的数值方法。原创 2016-01-25 19:29:58 · 61679 阅读 · 3 评论 -
卷积定理及其证明
卷积定理是傅立叶变换满足的一个重要性质。卷积定理指出,函数卷积的傅立叶变换是函数傅立叶变换的乘积。具体分为时域卷积定理和频域卷积定理,时域卷积定理即时域内的卷积对应频域内的乘积;频域卷积定理即频域内的卷积对应时域内的乘积,两者具有对偶关系原创 2015-11-24 12:20:54 · 10466 阅读 · 6 评论 -
有限差分法求解偏微分方程
只含有未知多元函数及其偏导数的方程,称之为偏微分方程。偏微分方程在工程技术(甚至图像处理)中有重要应用。差分方法又称为有限差分方法或网格法,是求偏微分方程定解问题的数值解中应用最广泛的方法之一。本文主要介绍利用有限差分(涉及Jacobi迭代和Gauss-Siedel迭代)求解偏微分方程(以Laplace方程为例)的方法,原创 2016-11-06 14:23:03 · 59548 阅读 · 1 评论 -
Hessian矩阵与多元函数极值
海塞矩阵(Hessian Matrix)是一个多元函数的二阶偏导数构成的方阵。它在机器学习和图像处理中,具有重要应用。例如,图像特征检测中的SIFT和SURF算法中就用到了它。此外,很多机器学习算法(例如Logistics回归)的优化求解过程中也会涉及到它。本文就来向读者道一道Hessian Matrix的来龙去脉原创 2016-04-17 14:13:50 · 36810 阅读 · 7 评论 -
协方差矩阵与主成分变换(PCA)
主成份变换,PCA,K-L变换,卡洛南-洛伊变换,霍特林变换,尽管名字很多,但本质上它们都是一个东西。PCA是机器学习和数据挖掘中的一种方法,也是数字图像处理中用来进行编码和压缩的一种技术。本文介绍相关理论推导。一大拨矩阵计算正在来袭原创 2015-12-21 16:47:14 · 19909 阅读 · 0 评论 -
PCA实例与其在图像压缩中的应用
主成份变换,PCA,K-L变换,卡洛南-洛伊变换,霍特林变换,尽管名字很多,但本质上它们都是一个东西。PCA是机器学习和数据挖掘中的一种方法,也是数字图像处理中用来进行编码和压缩的一种技术。本文介绍相关理论推导。本文将通过实例和图像中的应用来介绍PCA原创 2015-05-01 11:41:25 · 5368 阅读 · 6 评论 -
如何学好图像处理——从小白到大神?
什么是数字图像处理?历史、以及它所研究的内容。说起图像处理,你会想到什么?你是否真的了解这个领域所研究的内容。纵向来说,数字图像处理研究的历史相当悠久;横向来说,数字图像处理研究的话题相当广泛。数字图像处理的历史可以追溯到近百年以前,大约在1920年的时候,图像首次通过海底电缆从英国伦敦传送到美国纽约。图像处理的首次应用是为了改善伦敦和纽约之间海底电缆发送的图片质量,那时就应用了图像...原创 2016-02-26 17:48:13 · 81866 阅读 · 52 评论 -
自适应图像降噪滤波器的设计与实现
几乎所有真正有价值的图像降噪方法都在试图让程序可以自适应地区隔无用的噪声和有用的图像纹理细节,然后再采取不同的处理方式,从而实现details preserving(或者edge preserving)。目前这样的方法已有很多,例如比较有名的双边滤波、各向异性扩散滤波和基于TV的去噪方法等等,而且它们在医学图像处理或者美颜嫩肤算法等领域中都有重要应用原创 2017-06-16 11:16:36 · 19152 阅读 · 7 评论 -
约束复原与维纳滤波(数学原理与MATLAB实现)
维纳滤波法是一种统计方法,是建立在图像和噪声都是随机过程,图像和噪声不相关的基础上,由此得到的结果在图像统计平均意义下是最优的。本文将深入研究著名的维纳滤波,特别是其背后的数学原理。这也涉及到了限制性图像复原和非限制性图像复原的一些话题原创 2017-07-03 12:01:33 · 31429 阅读 · 11 评论 -
导向滤波(Guided Filter)的解析与实现
导引滤波(Guided Filter)是由Dr. Kaiming He等人提出的一种滤波算法(现在MATLAB的图像处理工具箱中已经内置了实现该算法的函数)。导引滤波不仅可以实现edge-preserving的图像平滑效果,亦可广泛应用于图像去雾、图像抠图,以及图像增强(主要是高动态光照渲染方面的应用)等领域。导向滤波的核心是求解一个最小二乘问题,本文将讨论其背后的数学原理并解析其MATLAB实现代码原创 2017-07-10 17:54:31 · 81100 阅读 · 39 评论 -
暗通道优先的图像去雾算法(上)
11.1 暗通道优先的图像去雾算法图像增强与图像修复二者之间有一定交叉,尽管它们一个强调客观标准,一个强调主观标准,但毕竟最终的结果都改善了图像的质量。图像去雾就是这两种技术彼此交叉领域中最典型的代表。如果将雾霾看作是一种噪声,那么去除雾霾的标准显然是非常客观的,也就是要将图像恢复至没有雾霾下所获取的情况。但是如果将在雾霾环境下拍摄的照片就看作是一种图像本来的面貌,那么去雾显然就是人们为...原创 2014-05-27 15:32:36 · 63590 阅读 · 36 评论 -
暗通道优先的图像去雾算法(下)
书接上文http://blog.csdn.net/baimafujinji/article/details/27206237我们已经了解了暗通道图像去雾算法的基本原理,下面我们来编程实现,然后对结果再做一些讨论。上述代码中调用了几个函数,限于篇幅这里仅给出其中的暗通道处理函数,其余函数读者可以尝试自己写写看,当然其中最关键的就是暗通道处理函数,这也是算法的核心内容。另...原创 2014-06-11 15:45:24 · 40342 阅读 · 48 评论 -
用于图像去雾的优化对比度增强算法
图像去雾哪家强?你或许知道著名的基于暗通道先验的图像去雾算法(He, 2009),但众所周知该算法的一个问题是对大片天空区域处理效果不佳。今天我们来介绍一篇由韩国学者所发表的研究论文《用于图像去雾的优化对比度增强算法》,作者提出一种基于四叉树划分的求解大气光估计的方法,同时提出了兼顾对比度和信息损失的图像去雾新思路,非常值得参考原创 2016-11-04 12:09:02 · 21573 阅读 · 21 评论 -
基于Retinex的图像去雾算法(MATLAB实现)
通常图像增强算法(例如直方图均衡算法以及更加强大的CLAHE)或多或少都有一定的去雾效果,只是这个效果有强有若罢了。本文将讨论另外一类十分重要的图像增强算法——Retinex算法。并在MATLAB中实验一下这类方法的去雾效果。Retinex(包括SSR、MSR和MSRCR)是一种常用的建立在科学实验和科学分析基础上的图像增强方法,它是以人类视觉系统为出发点发展而来的一套理论方法原创 2017-07-01 14:09:06 · 54318 阅读 · 44 评论 -
基于直方图的图像增强算法(HE、CLAHE)之(一)
直方图是图像色彩统计特征的抽象表述。基于直方图可以实现很多有趣的算法。例如,图像增强中利用直方图来调整图像的对比度、有人利用直方图来进行大规模无损数据隐藏、还有人利用梯度直方图HOG来构建图像特征进而实现目标检测。本节我们就来讨论重要的直方图均衡化算法,说它重要是因为以此为基础后续又衍生出了许多实用而有趣的算法。Histogram equalization如果一幅图像的像素灰度...原创 2016-01-31 14:30:16 · 31376 阅读 · 10 评论 -
基于直方图的图像增强算法(HE、CLAHE)之(二)
作为图像增强算法系列的第二篇文章,下面我们将要介绍功能强大、用途广泛、影响深远的对比度有限的自适应直方图均衡(CLAHE,Contrast Limited Adaptive Histogram Equalization)算法。尽管最初它仅仅是被当作一种图像增强算法被提出,但是现今在图像去雾、低照度图像增强,水下图像效果调节、以及数码照片改善等方面都有应用。这个算法的算法原理看似简单,但是实现起来却...原创 2016-02-15 10:29:38 · 62975 阅读 · 44 评论 -
自然抠图算法:以经典的贝叶斯抠图为例(Bayesian Matting)
图像抠图技术(Image Matting)在现代影视技术中有重要应用,例如在摄影棚的蓝幕或者绿幕下拍摄好的镜头再通过电脑后期制作换成不同的宏大场景就利用了图像处理中的抠图技术。现在,先进的抠图算法不仅能应对蓝幕的情况,对于自然背景也能有很好的表现。贝叶斯抠图(Bayesian Matting)、泊松抠图(Poisson Matting)等都是经典的Image Matting算法原创 2017-06-07 22:53:29 · 26721 阅读 · 25 评论 -
从泊松方程到泊松融合(Poisson Matting)
数学无疑是现代数字图像处理技术的一个重要基石,一些效果显著的同时也非常popular的图像处理技术中大量地借鉴和利用了经典数学理论中的一些著名的成果。泊松方程(Poisson Equation)在泊松图像编辑(Poisson Image Editing)以及泊松融合(Poisson Matting)中的应用就是一个典型的例子原创 2010-01-27 00:00:00 · 36451 阅读 · 12 评论 -
图像的泊松(Poisson)编辑、泊松融合完全详解
在前两篇文章中,我们详细介绍了基于泊松方程的图像编辑与融合技术的算法原理。本部分是该系列文章的最后一篇,这里我们将讨论算法的离散化数值实现,并给出相应的MATLAB代码,实现结果如图所示,可见图像融合的效果还是非常理想原创 2015-07-07 12:25:01 · 35107 阅读 · 14 评论 -
Poisson image editing算法实现的Matlab代码解析
之前我发了数篇系列博文来仔细研究Poisson Image Editing算法,每次重新审视和深入,仿佛都能有更为深刻的认识和很大的收获。这应该算是我这个系列的完结篇,会用用Matlab代码一点一点的演示,原文作者到底是如何设计和实现他那个强大且影响深远的算法的。希望你在看本文之前务必参考一下文章来了解算法原理,本文将主要讲解编程实现的问题,对于前面讲过的内容,我不会深究原创 2016-01-29 14:00:25 · 35393 阅读 · 61 评论 -
图像处理之让手心长出眼睛,其实嘴也可以~
这里所介绍的算法就是大名鼎鼎的泊松融合算法,它的应用非常广泛,除了上面这种手上长眼睛的效果,还可以实现“纹理拼接”、“精细抠图”、“移花接木”等等效果。我之前已经从纯数学的角度讨论过它的原理了原创 2016-01-25 23:46:53 · 7650 阅读 · 6 评论 -
基于字典学习的图像去噪研究与实践
机器学习在图像处理中有非常多的应用,运用机器学习(包括现在非常流行的深度学习)技术,很多传统的图像处理问题都会取得相当不错的效果。今天我们就以机器学习中的字典学习(Dictionary Learning)为例,来展示其在图像去噪方面的应用。文中代码采用Python写成,其中使用了Scikit-learn包中提供的API,读者可以从【2】中获得演示用的完整代码(Jupyter notebook)。...原创 2018-07-01 15:18:12 · 10655 阅读 · 6 评论 -
利用小波融合对由聚焦失败导致的图像模糊进行修复:基于MATLAB实现
图像的融合是将两幅或多幅图像融合在一起,以获取对同一场景的更为精确、更为全面、更为可靠的图像描述。融合算法应该充分利用各原图像的互补信息,使融合后的图像更适合人的视觉感受,适合进一步分析的需要。例如在实际摄影拍照时,由于焦距的缘故,近景或远景总有一者可能处于模糊不清的状态。此时运用图像融合技术就可以将两张模糊的图片(一张近景模糊,一张远景模糊)进行融合原创 2015-05-01 11:22:00 · 6870 阅读 · 4 评论 -
基于Otsu算法的图像自适应阈值分割
在图像处理实践中,将灰度图转化为二值图是非常常见的一种预处理手段。在Matlab中,可以使用函数BW = im2bw(I, level)来将一幅灰度图 I,转化为二值图。其中,参数level是一个介于0~1之间的值,也就是用于分割图像的阈值。默认情况下,它可取值是0.5。现在问题来了,有没有一种根据图像自身特点来自适应地选择阈值的方法呢?答案是肯定的!我们今天就来介绍其中最为经典的Ots...原创 2016-02-03 14:48:14 · 35909 阅读 · 3 评论 -
一点一滴完全突破KAZE特征检测算法,从各向异性扩散滤波开始(1)
ECCV2012中出现了一种比SIFT更稳定的特征检测算法KAZE。尽管,这个算法是几个法国人提出的,但是算法却有一个日文的名字。KAZE是日语‘风’的谐音,最近宣布退休的宫崎骏所拍摄的影片“起风了”,那个主题曲里就不停的反复出现KAZE这个发音。传统的SIFT和SURF核心算法都被申请了专利,在实际应用中存在一定障碍原创 2013-09-11 17:31:10 · 13826 阅读 · 2 评论 -
一点一滴完全突破KAZE特征检测算法,从各向异性扩散滤波开始(2)
本节继续前一小节,完整的介绍了一维扩散方程的内容,有了这两个小节的基础,下一节我们将正式进入“各向异性扩散”方程,特别是P-M方程的介绍原创 2013-09-11 18:28:26 · 7783 阅读 · 10 评论 -
一点一滴完全突破KAZE特征检测算法,从各向异性扩散滤波开始(3)
读者已经掌握了热力学中的一维扩散方程(及其物理意义),为了向KAZE算法再进一步,本节主要向读者介绍,由一维扩散方向所导出的各向同性扩散,各向同性扩散的引入是为了帮助读者理解后续的各向异性扩散,主要是KAZE中使用的Perona-Malik方程(P-M方程)原创 2013-09-17 12:58:36 · 9530 阅读 · 11 评论 -
一点一滴完全突破KAZE特征检测算法(4)
引子:这个系列的文章中间隔了一段时间没有更新,抱歉让各位久等了。主要是前一阵子一直在忙活出版我的新书(《 数字图像处理:技术详解与Visual C++实践》)。现在还要继续我们关于KAZE算法的话题。这个算法试验的效果是非常理想的,在尺度不变特征匹配算法领域异军突起,是继SIFT算法后的有一个重大进展和突破原创 2014-03-28 14:23:31 · 14559 阅读 · 41 评论 -
数字图像处理特效中彩色墨水效果的设计与实现
先来看两张对比图,首先是原图。 下面是处理后的效果,其实下图看起来已经不再像是一张拍摄的照片了,更像是手工绘制的。 其实除了对于边缘的描绘外,显然对色彩也需要进行适当处理。应该还可以有改进的空间,但是毕竟算法的实现方式非常的简单,而且毕竟体现了处理此类问题所应该考虑的基本思想。 下面是我基于MagicHouse平台用C++实现的代码。 函数调用部分 ...原创 2015-02-12 21:21:53 · 7358 阅读 · 3 评论 -
数字图像处理中的Box Filter
图像处理中常常会听到盒子滤波(Box Filter)这个概念。A boxfilter is also called a mean filter。也就是说,Box Filter对当前像素及其相邻的的像素点都一视同仁,统一进行平均处理,这样就可以滤去图像中的噪声。而在实践中,我们可以用基于模板的卷积操作来实现Box Filter,Box Filter的模板中所有系数都取相同的值。下图给出了对图像进行B...原创 2009-07-29 01:55:00 · 15444 阅读 · 6 评论