2012-05-29 21:24:29 dcraw 阅读数 21124

Last update: 2012-6-3

本章主要讨论图像处理与分析。虽然后面计算机视觉部分的有些内容比如特征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以及它们的出处,没有把它们纳入到图像处理与分析中来。同样,这里面也有一些也可以划归到计算机视觉中去。这都不重要,只要知道有这么个方法,能为自己所用,或者从中得到灵感,这就够了。

本章的下载地址在:

http://iask.sina.com.cn/u/2252291285/ish?folderid=868771


1. Bilateral Filter

Bilateral Filter俗称双边滤波器是一种简单实用的具有保持边缘作用的平缓滤波器,由Tomasi等在1998年提出。它现在已经发挥着重大作用,尤其是在HDR领域。

[1998 ICCV] BilateralFiltering for Gray and Color Images

[2008 TIP] AdaptiveBilateral Filter for Sharpness Enhancement and Noise Removal


2. Color

如果对颜色的形成有一定的了解,能比较深刻的理解一些算法。这方面推荐冈萨雷斯的数字图像处理中的相关章节以及Sharma在Digital Color Imaging Handbook中的第一章“Colorfundamentals for digital imaging”。跟颜色相关的知识包括Gamma,颜色空间转换,颜色索引以及肤色模型等,这其中也包括著名的EMD。

[1991 IJCV] Color Indexing

[2000 IJCV] The EarthMover's Distance as a Metric for Image Retrieval

[2001 PAMI] Colorinvariance

[2002 IJCV] StatisticalColor Models with Application to Skin Detection

[2003] A review of RGBcolor spaces

[2007 PR]A survey ofskin-color modeling and detection methods

Gamma.pdf

GammaFAQ.pdf


3.Compression and Encoding

个人以为图像压缩编码并不是当前很热的一个话题,原因前面已经提到过。这里可以看看一篇对编码方面的展望文章

[2005 IEEE] Trends andperspectives in image and video coding


4.Contrast Enhancement

对比度增强一直是图像处理中的一个恒久话题,一般来说都是基于直方图的,比如直方图均衡化。冈萨雷斯的书里面对这个话题讲的比较透彻。这里推荐几篇个人认为不错的文章。

[2002 IJCV] Vision and theAtmosphere

[2003 TIP] Gray and colorimage contrast enhancement by the curvelet transform

[2006 TIP] Gray-levelgrouping (GLG) an automatic method for optimized image contrastenhancement-part II

[2006 TIP] Gray-levelgrouping (GLG) an automatic method for optimized image contrastEnhancement-part I

[2007 TIP] TransformCoefficient Histogram-Based Image Enhancement Algorithms Using Contrast Entropy

[2009 TIP] A HistogramModification Framework and Its Application for Image Contrast Enhancement


5. Deblur (Restoration)

图像恢复或者图像去模糊一直是一个非常难的问题,尤其是盲图像恢复。港中文的jiaya jia老师在这方面做的不错,他在主页也给出了exe。这方面的内容也建议看冈萨雷斯的书。这里列出了几篇口碑比较好的文献,包括古老的Richardson-Lucy方法,几篇盲图像恢复的综述以及最近的几篇文章,尤以Fergus和Jiaya Jia的为经典。

[1972] Bayesian-BasedIterative Method of Image Restoration

[1974] an iterative techniquefor the rectification of observed distributions

[1990 IEEE] Iterativemethods for image deblurring

[1996 SPM] Blind ImageDeconvolution

[1997 SPM] Digital imagerestoration

[2005] Digital ImageReconstruction - Deblurring and Denoising

[2006 Siggraph] RemovingCamera Shake from a Single Photograph

[2008 Siggraph]High-quality Motion Deblurring from a Single Image

[2011 PAMI]Richardson-Lucy Deblurring for Scenes under a Projective Motion Path


6. Dehazing and Defog

严格来说去雾化也算是图像对比度增强的一种。这方面最近比较好的工作就是He kaiming等提出的Dark Channel方法。这篇论文也获得了2009的CVPR 最佳论文奖。2003年的广东高考状元已经于2011年从港中文博士毕业加入MSRA(估计当时也就二十五六岁吧),相当了不起。

[2008 Siggraph] SingleImage Dehazing

[2009 CVPR] Single ImageHaze Removal Using Dark Channel Prior

[2011 PAMI] Single ImageHaze Removal Using Dark Channel Prior


7. Denoising

图像去噪也是图像处理中的一个经典问题,在数码摄影中尤其重要。主要的方法有基于小波的方法和基于偏微分方程的方法。

[1992 SIAM] Imageselective smoothing and edge detection by nonlinear diffusion. II

[1992 SIAM] Imageselective smoothing and edge detection by nonlinear diffusion

[1992] Nonlinear totalvariation based noise removal algorithms

[1994 SIAM] Signal andimage restoration using shock filters and anisotropic diffusion

[1995 TIT] De-noising bysoft-thresholding

[1998 TIP] Orientationdiffusions

[2000 TIP] Adaptivewavelet thresholding for image denoising and compression

[2000 TIP] Fourth-orderpartial differential equations for noise removal

[2001] Denoising  through wavelet shrinkage

[2002 TIP] The CurveletTransform for Image Denoising

[2003 TIP] Noise removalusing fourth-order partial differential equation with applications to medicalmagnetic resonance images in space and time

[2008 PAMI] AutomaticEstimation and Removal of Noise from a Single Image

[2009 TIP] Is DenoisingDead


8. Edge Detection

边缘检测也是图像处理中的一个基本任务。传统的边缘检测方法有基于梯度算子,尤其是Sobel算子,以及经典的Canny边缘检测。到现在,Canny边缘检测及其思想仍在广泛使用。关于Canny算法的具体细节可以在Sonka的书以及canny自己的论文中找到,网上也可以搜到。最快最直接的方法就是看OpenCV的源代码,非常好懂。在边缘检测方面,Berkeley的大牛J Malik和他的学生在2004年的PAMI提出的方法效果非常好,当然也比较复杂。在复杂度要求不高的情况下,还是值得一试的。MIT的Bill Freeman早期的代表作Steerable Filter在边缘检测方面效果也非常好,并且便于实现。这里给出了几篇比较好的文献,包括一篇最新的综述。边缘检测是图像处理和计算机视觉中任何方向都无法逃避的一个问题,这方面研究多深都不为过。

[1980] theory of edgedetection

[1983 Canny Thesis] findedge

[1986 PAMI] AComputational Approach to Edge Detection

[1990 PAMI] Scale-spaceand edge detection using anisotropic diffusion

[1991 PAMI] The design anduse of steerable filters

[1995 PR] Multiresolutionedge detection techniques

[1996 TIP] Optimal edgedetection in two-dimensional images

[1998 PAMI] Local ScaleControl for Edge Detection and Blur Estimation

[2003 PAMI] Statisticaledge detection_ learning and evaluating edge cues

[2004 IEEE] Edge DetectionRevisited

[2004 PAMI] Design ofsteerable filters for feature detection using canny-like criteria

[2004 PAMI] Learning toDetect Natural Image Boundaries Using Local Brightness, Color, and Texture Cues

[2011 IVC] Edge and lineoriented contour detection State of the art


9. Graph Cut

基于图割的图像分割算法。在这方面没有研究,仅仅列出几篇引用比较高的文献。这里又见J Malik,当然还有华人杰出学者Jianbo Shi,他的主页非常搞笑,在醒目的位置标注Do not flyChina Eastern Airlines ... 看来是被坑过,而且坑的比较厉害。这个领域,俄罗斯人比较厉害。

[2000 PAMI] Normalizedcuts and image segmentation

[2001 PAMI] Fastapproximate energy minimization via graph cuts

[2004 PAMI] What energyfunctions can be minimized via graph cuts


10.Hough Transform

虽然霍夫变换可以扩展到广义霍夫变换,但最常用的还是检测圆和直线。这方面同样推荐看OpenCV的源代码,一目了然。Matas在2000年提出的PPHT已经集成到OpenCV中去了。

[1986 CVGIU] A Survey ofthe Hough Transform

[1989] A Comparative studyof Hough transform methods for circle finding

[1992 PAMI] Shapesrecognition using the straight line Hough transform_ theory and generalization

[1997 PR] Extraction ofline features in a noisy image

[2000 CVIU] RobustDetection of Lines Using the Progressive Probabilistic Hough Transform


11. Image Interpolation

图像插值,偶尔也用得上。一般来说,双三次也就够了

[2000 TMI] Interpolationrevisited


12. Image Matting

也就是最近,我才知道这个词翻译成中文是抠图,比较难听,不知道是谁开始这么翻译的。没有研究,请看文章以及Richard Szeliski的相关章节。以色列美女Levin在这方面有两篇PAMI。

[2008 Fnd] Image and VideoMatting A Survey

[2008 PAMI] A Closed-FormSolution to Natural Image Matting

[2008 PAMI] SpectralMatting


13.  Image Modeling

图像的统计模型。这方面有一本专门的著作Natural Image Statistics

[1994] The statistics ofnatural images

[2003 JMIV] On Advances inStatistical Modeling of Natural Images

[2009 IJCV] Fields ofExperts

[2009 PAMI] Modelingmultiscale subbands of photographic images with fields of Gaussian scalemixtures


14. Image Quality Assessment

在图像质量评价方面,Bovik是首屈一指的。这位老师也很有意思,作为编辑出版了很多书。他也是IEEE的Fellow

[2004 TIP] Image qualityassessment from error visibility to structural similarity

[2011 TIP] blind imagequality assessment From Natural Scene Statistics to Perceptual Quality


15.  Image Registration

图像配准最早的应用在医学图像上,在图像融合之前需要对图像进行配准。在现在的计算机视觉中,配准也是一个需要理解的概念,比如跟踪,拼接等。在KLT中,也会涉及到配准。这里主要是综述文献。

[1992 MIA] Image matching asa diffusion process

[1992 PAMI] A Method forRegistration of 3-D shapes

[1992] a survey of imageregistration techniques

[1998 MIA] A survey ofmedical image registration

[2003 IVC] Imageregistration methods a survey

[2003 TMI]Mutual-Information-Based Registration of Medical Survey

[2011 TIP] Hairisregistration


16. Image Retrieval

图像检索曾经很热,在2000年之后似乎消停了一段时间。最近各种图像的不变性特征提出来之后,再加上互联网搜索的商业需求,这个方向似乎又要火起来了,尤其是在工业界。这仍然是一个非常值得关注的方面。而且图像检索与目标识别具有相通之处,比如特征提取和特征降维。这方面的文章值得一读。在最后给出了两篇Book chapter,其中一篇还是中文的。

[2000 PAMI] Content-basedimage retrieval at the end of the early years

[2000 TIP] PicToSeekCombining Color and Shape Invariant Features for Image Retrieval

[2002] Content-Based ImageRetrieval Systems A Survey

[2008] Content-Based ImageRetrieval-Literature Survey

[2010] Plant ImageRetrieval Using Color,Shape and Texture Features

[2012 PAMI] A MultimediaRetrieval Framework Based on Semi-Supervised Ranking and Relevance Feedback

CBIR Chinese

fundament of cbir


17. Image Segmentation

图像分割,非常基本但又非常难的一个问题。建议看Sonka和冈萨雷斯的书。这里给出几篇比较好的文章,再次看到了J Malik。他们给出了源代码和测试集,有兴趣的话可以试试。

[2004 IJCV] EfficientGraph-Based Image Segmentation

[2008 CVIU] Imagesegmentation evaluation A survey of unsupervised methods

[2011 PAMI] ContourDetection and Hierarchical Image Segmentation


18. Level Set

大名鼎鼎的水平集,解决了Snake固有的缺点。Level set的两位提出者Sethian和Osher最后反目,实在让人遗憾。个人以为,这种方法除了迭代比较费时,在真实场景中的表现让人生疑。不过,2008年ECCV上的PWP方法在结果上很吸引人。在重初始化方面,Chunming Li给出了比较好的解决方案

[1995 PAMI] Shape modelingwith front propagation_ a level set approach

[2001 JCP] Level SetMethods_ An Overview and Some Recent Results

[2005 CVIU] Geodesicactive regions and level set methods for motion estimation and tracking

[2007 IJCV] A Review ofStatistical Approaches to Level Set Segmentation

[2008 ECCV] RobustReal-Time Visual Tracking using Pixel-Wise Posteriors

[2010 TIP] DistanceRegularized Level Set Evolution and its Application to Image Segmentation


19.Pyramid

其实小波变换就是一种金字塔分解算法,而且具有无失真重构和非冗余的优点。Adelson在1983年提出的Pyramid优点是比较简单,实现起来比较方便。

[1983] The LaplacianPyramid as a Compact Image Code


20. Radon Transform

Radon变换也是一种很重要的变换,它构成了图像重建的基础。关于图像重建和radon变换,可以参考章毓晋老师的书,讲的比较清楚。

[1993 PAMI] Imagerepresentation via a finite Radon transform

[1993 TIP] The fastdiscrete radon transform I theory

[2007 IVC] Generalisedfinite radon transform for N×N images


21.Scale Space

尺度空间滤波在现代不变特征中是一个非常重要的概念,有人说SIFT的提出者Lowe是不变特征之父,而Linderburg是不变特征之母。虽然尺度空间滤波是Witkin最早提出的,但其理论体系的完善和应用还是Linderburg的功劳。其在1998年IJCV上的两篇文章值得一读,不管是特征提取方面还是边缘检测方面。

[1987] Scale-spacefiltering

[1990 PAMI] Scale-Spacefor Discrete Signals

[1994] Scale-space theoryA basic tool for analysing structures at different scales

[1998 IJCV] Edge Detectionand Ridge Detection with Automatic Scale Selection

[1998 IJCV] FeatureDetection with Automatic Scale Selection


22. Snake

活动轮廓模型,改变了传统的图像分割的方法,用能量收缩的方法得到一个统计意义上的能量最小(最大)的边缘。

[1987 IJCV] Snakes ActiveContour Models

[1996 ] deformable modelin medical image A Survey

[1997 IJCV] geodesicactive contour

[1998 TIP] Snakes, shapes,and gradient vector flow

[2000 PAMI] Geodesic activecontours and level sets for the detection and tracking of moving objects

[2001 TIP] Active contourswithout edges


23.  Super Resolution

超分辨率分析。对这个方向没有研究,简单列几篇文章。其中Yang Jianchao的那篇在IEEE上的下载率一直居高不下。

[2002] Example-BasedSuper-Resolution

[2003 SPM] Super-Resolution Image Reconstruction A Technical Overview

[2009 ICCV] Super-Resolutionfrom a Single Image

[2010 TIP] ImageSuper-Resolution Via Sparse Representation


24. Thresholding

阈值分割是一种简单有效的图像分割算法。这个topic在冈萨雷斯的书里面讲的比较多。这里列出OTSU的原始文章以及一篇不错的综述。

[1979 IEEE] OTSU Athreshold selection method from gray-level histograms

[2001 JISE] A Fast Algorithmfor Multilevel Thresholding

[2004 JEI] Survey overimage thresholding techniques and quantitative performance evaluation


25. Watershed

分水岭算法是一种非常有效的图像分割算法,它克服了传统的阈值分割方法的缺点,尤其是Marker-Controlled Watershed,值得关注。Watershed在冈萨雷斯的书里面讲的比较详细。

[1991 PAMI] Watersheds indigital spaces an efficient algorithm based on immersion simulations

[2001]The WatershedTransform Definitions, Algorithms and Parallelizat on Strategies


2016-11-07 12:19:14 lipengshiwo 阅读数 632



 Camera 图像处理原理分析- 色彩篇 一
http://blog.csdn.net/colorant/article/details/1913200


Camera 图像处理原理分析- 色彩篇 二
http://blog.csdn.net/colorant/article/details/1913209


 Camera 图像处理原理分析- 色彩篇 三
http://blog.csdn.net/colorant/article/details/1913247


Camera 图像处理原理分析- 亮度及曝光控制
http://blog.csdn.net/colorant/article/details/1913271


Camera 图像处理原理分析- 抗噪 变焦 频闪 等
http://blog.csdn.net/colorant/article/details/1913334


 YUV / RGB 格式分析及快速查表算法设计
http://blog.csdn.net/colorant/article/details/1913162

2014-01-13 21:50:00 xj2419174554 阅读数 5609

原创作品,出自 “晓风残月xj” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj)。

由于各种原因,可能存在诸多不足,欢迎斧正!

1.课程论文题目

去雾。

本次论文我的选题是去雾。由于对《图像处理与分析》这门课很感兴趣,同时也为了锻炼一下自己学习新知识的能力,我没有选择一些容易的常规的图像处理与分析算法,而是选择较为前沿的去雾算法。作为一名计算机专业的学生,我认为仅仅掌握基本的程序设计思想与常规算法是远远不够的,还要培养自己不断学习的能力—学习新知识、学习新思想的能力。这方面很重要的体现就是了解相关科技前沿,尽自己最大努力研读新论文。此外,我认为一个好的课程报告应该有一定的实用价值,或者说写报告的人应该尽可能使自己的选题有实用价值。众所周知,伴随着我国经济的快速发展,一些一味追求GDP的粗制乱造的发展模式所带来的严重后果正在干扰着我们的正常生活方式。我这次报告所要探讨的主题—雾就是其中不可忽视的因素。我这里所说的雾,是广义的雾,包括雾、霾、沙尘、烟等一切导致视觉效果受限的物理现象。由于雾的存在,户外图像质量降低,如果不处理,往往满足不了相关研究、应用的的要求。在雾的影响下,经过物体表面的光被大气中的颗粒物吸收和反射,导致获取的图像质量差,细节模糊、色彩暗淡。通过一定的技术手段,去掉物体表面的雾霭,增强图片效果显得尤为重要。

2.程序设计思路

由于我的程序可处理的图片可以是灰度的、彩色的两种。所以我设计了两种算法实现不同格式图片的处理:直方图灰度分布均衡化去雾算法,基于单幅图像的快速去雾算法。

 

1)、直方图灰度分布均衡化去雾算法

在此我先谈谈我对直方图均衡化的认识。

直方图均衡化(英文名Histogram Equalization),通过使用累积函数对灰度值进行“调整”以实现对比度的增强。具体说来,即把原图像对应的灰度直方图从比较集中的灰度区间通过一定的转换变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。

直方图均衡化的具体编程实现为

    A.统计每个灰度等级对应的像素点数 

    B.计算累计概率

    C.重新映射图像像素点灰度

在这里我首先统计0-255个灰度等级i的像素点数Color[i],然后分别除以图像总的像素点求出每个灰度等级对应的概率PerProbability[i];接着运用积分的思想来计算累计概率AccuProbability[i];然后映射求得新的像素值NewColor[i]

 

 上述坐标图和积分式解释了积分思想求累计概率的正确性。下面举个例子展示整个过程。

a.假设下面使是图像对应的像素点:

 

b.下面是中间处理工程

 

c.经过处理后图像对应的像素点:

 

为什么直方图灰度分布均衡化可以在一定成都上达到去雾的效果呢?这是因为通过使用累积函数对灰度值进行“调整”以实现对比度的增强,一定程度上使暗的地方更暗、亮的地方更亮,从而在视觉上达到去雾的效果。

但是上面的去雾效果仅仅局限于灰度图片,而不能处理更为实用的彩色图像。经过上述直方图处理后,达到均衡化图像的目的,但是图像会在原图基础上失真或称为走样,即整幅图像的颜色发生很大改变,严重偏离去雾的初衷(去雾是在原图基础上除去表面的薄纱从而增强整幅图像的视觉效果)。

 综上,直方图灰度分布均衡化去雾算法可以处理灰色图,但对于彩色图像就会出现走样,达不到去雾的效果。为了解决彩色图像的去雾问题,我又看了一些最新论文,其中包括何凯明博士的《Single Image Haze Removal Using Dark Channel Prior》论文,这是一篇非常深刻的文章,里面公式推导很多,我硬着头皮读完后看不懂,于是又到博客园、CSDN上筛选出几篇相对容易理解和实现的论文,其中我对清华大牛刘倩、陈茂银、周东华的《基于单幅图像的快速去雾算法》论文非常感兴趣,决定以其为突破点尝试彩色图像的去雾算法实现。

 

 

2.基于单幅图像的快速去雾算法

由于基于单幅图像的快速去雾算法涉及的学科非常多、理论性非常强,在此我的设计思路主要是取自清华大牛刘倩、陈茂银、周东华的《基于单幅图像的快速去雾算法》论文以及在编写程序的过程中在一定程度上参考了CSDN博客兰专家laviewpbt博客《一种可实时处理 O(1)复杂度图像去雾算法的实现》,由于所处理图片的格式不同,以及论文、博客里都没提供源码,所以在编写程序的过程中我并无抄袭。在读论文的过程中,真的是充满了对论文撰写者的佩服之情。之前徐老师在课堂上介绍说《图像处理与分析》是门交叉学科,博大精深,那时还愚昧的不以为然,一则是因为所学知识太少,眼界受限,没有了解相关的前言领域;二来是课下编程不够,虽说自己实现了图像几何变换、图像增强等算法,但总的难度很低,而且刚开始接触时不会还能参照先驱的程序。在看了几篇图像处理的前研论文之后,我感觉到自己的愚昧无知。下面就谈谈对我《基于单幅图像的快速去雾算法》论文的一些理解。

在计算机视觉领域,通常运用严密的数学物理方法来描述雾霾等自然现象,《基于单幅图像的快速去雾算法》论文中提出算法的出发点就是基于衰减模型和环境光模型的,并且提出了一个模型表达式:

 

x为空间坐标,F是待恢复的无雾图像,r是大气散射系数,d是景物深度,A是与x无关的全局大气光,H为有雾情况下的景物图像。

这是基于大气理论的光学表达式,由于知识有限,我只能照搬了。

 

      上面是程序的算法流程,下面我将依次谈谈我对每个步骤的理解。

Step 1  读入待处理的图像

论文以及其他关于去雾的程序都是基于较高格式的图像的,普通bmp尤其是268色位图的处理没有涉及,这也是我选择去雾算法实现的一个重要原因—不简单机械地重复别人做过的东西。

 

 Step 2 求空间最小颜色通道

基本色通道(color channel),就是将构成整体图像的颜色信息整理并表现为单色图像的工具。我们知道现实世界中的颜色都是由红、绿、蓝3中颜色组成的。本步骤是要求出所有空间坐标位置对应的最小颜色通道,即Ri,Gi,Bi中最小者,得到新图像M

 

 Step 3 M进行均值滤波

     均值滤波是徐老师在课堂上重点讲过的。均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素,再用模板中的全体像素的平均值来代替原来像素值。 可见均值滤波的关键是选择模板,然后对应相乘相加相除,这个过程是比较简单。

 

Step 4 M所有像素点求均值Mav

直接把M中的下所有像素相加然后除以总像素数即可。

 

Step 5  求环境光估计值

去雾很大程度上就是要考虑环境光的影响,还远物体的庐山真面目。利用均值滤波求出的环境光具有深度缓变处平滑,深度跳变处随之跳变变的特点。当M的深度发生较大变化时M,Mav也随之发生较大变化,最终体现在L上。

 

Step 6 求出全局大气光

全局大气光也是对图像的重要影响因素。通常取最大灰度值为全局大气光A

 

Step 7 还原图像

     考虑环境光、全局大气光的影响,利用算法开头给出的模型表达式还原图片。

 

   上面就是整个过程。在原论文中,上述都给出较为严格的证明,由于相关专业知识有限,我就不交代推理证明过程了。

    

   

3.数据结构与算法设计

1)、直方图灰度分布均衡化去雾算法

     由于整个处理过程中没有特殊要求的操作,所以开辟二维数组就可解决问题。分别开辟3个二维数组

int *Color=new int[MAXNCOLOR];//Color[i]存储该灰度等级i对应的像素点数,同时为了节省内存空间,在映射后Color[i]则存储原来灰度等级i对应的新灰度等级,这样做可以少申请一个二维数组,由于图像处理很占内存空间,因此优化是必须的。

double *PerProbability=new double[MAXNCOLOR];//存储灰度等级i对应的概率PerProbability[i].

double* AccuProbability=new double[MAXNCOLOR];//存储灰度等级i对应的累加概率AccuProbability[i],此数组可以和上面的PerProbability[]数组合成一个,为了程序的可读性,我开了两个数组,但须明确此处可以优化。

 

此算法原理理解起来可能不是很容易,但实现起来却很简单,无需特殊编程技巧,在此就不给出伪代码,只给出大致流程:统计每个灰度等级对应的像素点数 ,计算累计概率,重新映射屏幕像素点灰度,具体实现见第4部分直方图灰度分布均衡化去雾算法源代码。此算法时间复杂度为O(n),空间复杂度为O(n),n为空间像素点数。

 

2.基于单幅图像的快速去雾算法

     上面的空间最小颜色通道和均值Mav可以在求所有点的颜色通道是一起求出,不必另写循环语句比较求得。由于编程实现较简单,在此就不多说了。

    具体算法步骤见程序设计思路部分,具体源代码见第4部分基于单幅图像的快速去雾算法。

 

4.程序关键代码

、直方图灰度分布均衡化去雾算法源代码
/*************************************************
*功能:直方图灰度分布均衡化去雾算法
**************************************************/
void CMyDIPView::OnMenuitem32790() 
{
	const int MAXNCOLOR=256+10;
	unsigned char *lpSrc;
	CMyDIPDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(pDoc->m_hDIB == NULL)
		return ;
	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
	int cxDIB = (int) ::DIBWidth(lpDIB);
	int cyDIB = (int) ::DIBHeight(lpDIB);
	int *Color=new int[MAXNCOLOR];
	memset(Color,0,sizeof(Color));
	long lLineBytes = WIDTHBYTES(cxDIB * 8);

	//统计每个灰度等级对应的像素点数
	for(int i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
			Color[*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j)]++;
		}
	}	

	//计算每个灰度等级对应的概率
	double *PerProbability=new double[MAXNCOLOR];
	double TotalPixelNumber=cxDIB*cyDIB*1.0;
	for(i=0;i<256;i++)
	{
		PerProbability[i]=Color[i]*1.0/TotalPixelNumber;
	}
    //计算每个灰度等级对应的累加概率
	double* AccuProbability=new double[MAXNCOLOR];
	AccuProbability[0]=PerProbability[0];
	Color[0]=(int)(AccuProbability[0]*255.0f+0.5f);
	for(i=1;i<256;i++)
	{
		AccuProbability[i]=AccuProbability[i-1]+PerProbability[i];
		Color[i]=(int)(AccuProbability[i]*255.0f);
	}
	
	//重新映射屏幕像素点灰度
	for(i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
			unsigned char perpixel=*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j);
			*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j)=Color[perpixel];
			
		}
	}
	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
	Invalidate(TRUE);
}



.基于单幅图像的快速去雾算法
/*************************************************
*功能:基于单幅图像的快速去雾算法
**************************************************/
void CMyDIPView::OnMenuitem32791() 
{
	unsigned char *lpSrc;
	CMyDIPDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(pDoc->m_hDIB == NULL)
		return ;
	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
	int cxDIB = (int) ::DIBWidth(lpDIB); 
	int cyDIB = (int) ::DIBHeight(lpDIB);  
	long lLineBytes = WIDTHBYTES(cxDIB * 8); 
	double sumMinColor=0;//所有颜色通道的累加和
	double aveMinColor=0;//所有颜色通道的平均值
	unsigned char minColor;//颜色通道最小值
	unsigned char maxColor=0;//所有颜色通道最大值
	int maxFlag=0;//标记颜色通道最大值权重
	int minFlag=0;//标记颜色通道最小值权重
	unsigned char *mNewPicture=new unsigned char[cxDIB*cyDIB];
	for(int i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
			
			unsigned char perpixel=*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j);
			unsigned char red=perpixel/32;
			minFlag=32;
            minColor=red;
			if(maxColor<red)
			{
				maxColor=red;
				maxFlag=32;
			}
			perpixel%=32;
			unsigned char green=perpixel/8;
			if(minColor>green)
			{
				minColor=green;	
				minFlag=8;
			}
			if(maxColor<green)
			{
				maxColor=green;
				maxFlag=8;
			}
			
			unsigned char blue=perpixel%8;
			if(minColor>blue)
			{
				minFlag=1;
				minColor=blue;
			}
			if(maxColor<blue)
			{
				maxColor=blue;
				maxFlag=1;
			}
			mNewPicture[cxDIB * (cyDIB - 1 - i) + j]=minColor*minFlag;
			sumMinColor+=minColor*minFlag;
		}
	}
	aveMinColor=sumMinColor/(cxDIB*cyDIB);//颜色通道平均值
	maxColor*=maxFlag;
	double maxAveColor=0;//均值滤波后颜色通道平均值
	double *mAveNewPicture=new double[cxDIB*cyDIB];
	double xishu=1.0/100.0;
	int h=cyDIB,w=cxDIB;
	int tem_w=10,tem_h=10;
	int dw = cxDIB;
	double sum;
    for(i=0;i<h;i++)
    {  
		for(int j=0;j<w;j++)
		{   	
			sum=0;	
			if( j<((tem_w-1)/2) || j>(w-(tem_w+1)/2) || i<((tem_h-1)/2) || i>(h-(tem_h+1)/2) )
				mAveNewPicture[i*dw+j]=mNewPicture[i*dw+j];
			else 
			{ 	
				for(int m=i-((tem_h-1)/2);m<=i+((tem_h-1)/2);m++)
				{
					for(int n=j-((tem_w-1)/2);n<=j+((tem_w-1)/2);n++)
					sum+=mNewPicture[m*dw+n];

				}	
				sum=sum*xishu;sum = fabs(sum);	
				if(sum<0)     sum=0;	
				if(sum>255)sum=255;
				mAveNewPicture[i*dw+j]=sum;
			}
			if(maxAveColor<mAveNewPicture[i*dw+j])
				maxAveColor=mAveNewPicture[i*dw+j];
		}
	} 
	double *lNewPicture=new double[cxDIB*cyDIB];
	for(i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
          lNewPicture[i*cxDIB+j]=min(min(aveMinColor*1.28,0.9)*mAveNewPicture[i*cxDIB+j],mNewPicture[i*cxDIB+j]);
		}
	}
	double A=(maxColor+maxAveColor)/2.0;
	for(i = 0; i < cyDIB; i++)
	{
		for(int j = 0; j < cxDIB; j++)
		{
			double H=*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j);
	        double L=lNewPicture[cxDIB * (cyDIB - 1 - i) + j];
			*(lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j)=(H-L)/(1-L/A);
		}
	}
	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
	Invalidate(TRUE);
}


 

 5.程序运行结果

(2)、直方图灰度分布均衡化去雾算法

图像1

  去雾前

 

 

图像2

   去雾前:

 


图像3

 

 

    对于上面3张灰度图像,直方图灰度分布均衡化达到的去雾效果是不错的,但是对于彩色图像,却无法回避走样问题。下面给出的就是直方图灰度分布均衡化在处理彩色图像时遇到的问题。

图像4

   去雾前

 

   图像4在直方图灰度分布均衡化后景物形状保持了,但色彩却严重偏离了,关于原因,上面已有解释。



(2).基于单幅图像的快速去雾算法

图像5

 

 

图像6

  去雾前

 

 

图像7

  去雾前

 

 

6.编程中遇到的困难及解决方法

1)、选题

    由于徐老师没有要求具体做什么,这个长期习惯老师出题然后自己动手编程的我带来一定干扰。自主选题也是一种自主学习能力,结合自己的兴趣与能力选择适合自己的选题。由于之前做ACM,我认为自己有一定的解决问题能力,于是选择了较为前沿的去雾算法。

  

(2)、查资料

由于本次我的选题较为前沿,所以相关资料不好找,有用的思想、算法等都得通过最近几年的论文获得。之前没有读过多少论文,尤其是像这次这样理论性很强的论文,所以在这方面遇到一定的麻烦。最后,通过CSDN和博客园两个平台,我找的了相关论文和可供参考的博客(在此对大牛们表示感谢)。

 

(3)、关于bmp格式的256色位图的处理

在我看到的相关论文里讨论的都是较高格式的图像,而徐老师给的程序框架是基于bmp格式的256色位图。我首先想到的是修改老师的程序,使之变成具有处理较高格式图片的能力,但由于时间以及没有牢固的MFC编程基础,最终没能动手改。但通过仔细阅读相关论文发现算法是可以处理bmp格式的256色位图的。

 

(4)、直方图灰度分布均衡化去雾算法处理彩色图

开始我打算直接用直方图灰度分布均衡化去雾算法处理彩色图片,但总是达不到预期的效果。图像上景物的轮廓是保持了,但颜色却发生很大的变化,没有达到去雾的效果。在多次修改程序不见改善的情况下我选择了重新看课本,经过一番理论分析,我搞清楚了直接直方图均衡化能增强整幅图像的效果,但不能使彩色图像的黯淡部分在不走样的情况下变亮。当然后来看到博客园上专家Imageshop的

 《限制对比度自适应直方图均衡化算法原理、实现及效果》以及

 《局部自适应自动色阶/对比度算法在图像增强上的应用》文章发现用人工智能中自适应方法也可以使直方图均衡化具备处理彩色图像的能力。但自适应的相关理论对刚开始接触图像处理的我来说有难度,所以我只用直方图均衡化处理灰度图像。

 

(5)、获取bmp格式的256色位图的颜色通道

基于单幅图像的快速去雾算法有一个很重要的一点就是获取原图像空间坐标像素点处的颜色通道中的最小者。关于获取颜色通道,在24位存储格式时可以通过依次访问3个字节获取相应的颜色通,也可以通过GetRValueGetRValueGetRValue等函数直接取出红绿蓝3种颜色通道,等等,但这些都不能处理8位的图像,后来我在CSDN上论坛上问别人,有人说RGB在一个字节中分别占3,2,3个比特位,于是我选用想到位操作或求模两种方法。

 

(6)、均值滤波模板大小的设置

     关于这点,徐老师课堂上是可以结合实际情况自己设定。但当面对具体情况时,模板大小的设定很有技巧。均值滤波可以对图像进行模糊处理、平滑处理,在一定范围了随模板大小的增大而增大,当达到某个峰值之后随模板大小的增大而减小。上述是本次实验经验所得,可能不符合理论,但我的程序结果却支持这种结论。

 

(7)、ρ参数的大小设置

   ρ参数的大小控制了图像去雾能力的大小,越大,雾气越少,图像越显得暗,越小,图像偏白,雾气越浓。所以在合适的范围内参数ρ应该尽可能取得大点,实验中我去的是1.28

 

7.总结心得

     在本次写报告的过程中,我最大的感觉就是知识欠缺。在我目前接触的图像处理算法中,没有特别难编程实现的,大多可以通过基本的编程方法解决。但是,其中的指导思想却是很需要用心体会的。在编程时一定要上升到理论层次,多问几个为什么:为什么这么做,为什么会有这样的效果等等。

    在我看来,图像处理就是一个矩阵变换,变换的是矩阵中对应空间坐标的像素值。而变换过程中要用到很多模板、算子、算法等,这些是进行矩阵变换的依据。在理论工作完成以后,再进行动手编程,这样才能达到真正学习图像处理与分析的目的。有的理论看起来很简单,但却温含着丰富的专业知识,需要我们静下心来慢慢体会,仔细琢磨;有的理论看起来就很难,就像我选的《基于单幅图像的快速去雾算法》这篇论文,从头到尾都体现着丰富的专业知识、严密的逻辑推理能力与深厚的科学内涵,对于这样的理论,更是难得的思想启蒙,我们应该迎难而上,尽可能的读懂它。当然在编程的过程中,我们也要不断优化自己的程序,图像对象的数据量很大,稍不留神算法的时间或空间复杂度就会很高,即便常数级的优化也是很有必要的,能少开辟数组是就少开辟,能少用一层循环就少用一层循环。

有人的地方就会有审美需求,而图像处理就是一种美化过程。图像处理是指对图像信息进行加工,从而满足人类的心理、视觉或者应用需求的思想与技术。常用的图像处理方法有图像的采集与数字化、图像的编码、图像的增强、图像恢复、图像分割、图像分析等。在学习《图像处理与分析》课时要注重理论,多想想为什么;同时也应多动手,获得相应的编程体验。

 

 

 

8、参考文献

1.刘倩、陈茂银、周东华 《基于单幅图像的快速去雾算法》论文

 

2.CSDN博客兰专家laviewpbt博客《一种可实时处理 O(1)复杂度图像去雾算法的实现

 

3.何凯明 《Single Image Haze Removal Using Dark Channel Prior》论文

这是我图像处理与分析结课报告,参考了很多大牛的论文、博客,在此对他们表示感谢!文章和程序中可能有很多缺陷或错误,还请大牛斧正。


    如果觉得对你有所帮助,给几毛资助也是不错的想法!下面是博主的支付宝二维码,如果有一天收到你的资助,将无比欣慰!

                   

2018-12-20 13:15:54 laodaliubei 阅读数 222

数学基础回顾 Math review

  • complex number 复数
    欧拉公式: cosθ+jsinθ=ejθcosθ +jsinθ = e^{jθ}
    复数运算: 乘法—模乘角加; n方—模方角n; 除法—模除角减.
  • 卷积convolution
    关于什么是卷积,"马同学"讲得还不错
  • 打脸叠加(时不变 >> 时变); 骰子%关键在于理解"shape modified"%.
  • 卷纸, 画直线,
  • From wikimedia: convolution is a mathematical operation on two functions (f and g) to produce a third function that expresses how the shape of one is modified by the other. The term convolution refers to both the result function and to the process of computing it. Convolution is similar to cross-correlation
    在这里插入图片描述
  • 离散则化 ∫ 为∑.

An Introduction to Convolution Neural Networks and Deep Learning

signal and systems 信号与系统

  • 信号分为确定性信号和随机信号, 而随机信号又分为平稳随机信号和非平稳随机信号.
  • 不确定信号是指幅度不能预先确定但服从某种统计规律的信号。虽无法用一确定的函数关系来表达,但可用数学期望、方差、相关函数、概率密度函数、功率谱函数等统计特征来描述统计特征不随时间而变化的称为“平稳随机信号”,否则就是“非平稳随机信号

Butterworth filter

  • It has a frequency response as flat as possible in the passband. It is also referred to as a maximally flat magnitude filter.
  • 渐变,振铃现象不明显,效果好但是计算复杂.
    Here is a graph of low-pass.
    在这里插入图片描述

wiener-Khinchin 维纳辛钦定理

  • Khinchin–Kolmogorov theorem, states that the autocorrelation function of a wide-sense-stationary random process has a spectral decomposition given by the power spectrum of that process. 即一个信号的功率谱密度就是该信号自相关函数的傅里叶变换
  • 功率谱是功率谱密度函数的简称,它定义为单位频带内的信号功率。它表示了信号功率随着频率的变化情况
  • 由于信号的自相关函数计算量大,所以信号的自相关函数通常不直接计算,而是用信号的功率谱密度的逆FFT变换来计算。

image 图像基础

  • 色域
    在这里插入图片描述

采用荧光灯和led背光源的lcd色域对比 在这里插入图片描述

色域越大,意味着显示器显示的色彩越多越丰富,但不代表最终会出现最佳的显示效果,需要色彩管理支持大色域才会显示出优势. 所以买显示器的时候不要被忽悠了.

Overview 概述

成像按照波长分类: γ射线,X射线,紫外,可见和红外,微波,无线电波, 超声波,电子显微镜.

Transform 图像变换

图像变换就是通过某种变换关系将空间图像转换为另一种形式来表达.

在各个领域, 我们会见到各种各样的变换,比如随机数学中的矩母,DSP中就更了,什么Z变换/T变换/小波/余弦/Fourier… 很多人学了很多年后仍然会疑惑: 变来变去的,干嘛??
In general, "变换"出于以下目的:

  1. 简化问题的处理过程;
  2. 有利于特征的提取;
  3. 有利于概念的理解.

Fourier

在这里插入图片描述
在这里插入图片描述
连续—积分; 离散—累加; 二维—双重积分/累加.
在这里插入图片描述
Fourier变换的计算异常复杂,所以真正让它得到广泛应用的是"Fast Fourier Transform".

FFT讲解

小波变换 Wavelet

"小"是指衰减性; "波"对应波动性,即振幅呈正负相间的震荡形式.
直观了解一下就明白了:
在这里插入图片描述

既然有了FFT, 为什么还要小波变换?
在这里插入图片描述

离散小波变换 Discrete Wavelet Transform
连续小波用于理论分析,实际还得是离散.
在这里插入图片描述
在这里插入图片描述

图像增强

灰度直方图: 各灰度级频率统计.
直方图修正是一种实用,有效的图像增强技术, 包括均衡化法和规定化法.
直方图均衡化: 通过变换函数T(r)控制原图像灰度级的概率密度函数得到你想要的"目的概率分布". 关键就是如何找到T(r).
离散是用频率代替概率.
在这里插入图片描述

  • 空间域增强方法: 对比度增强 , 图像平滑.

对比度增强有灰度变换法(线性,对数,指数)和直方图调整法(均衡化,规定化)

图像平滑又叫去噪, 包括邻域平均法,中值滤波法

  • 邻域平均法在这里插入图片描述
  • 中值滤波法
    在这里插入图片描述
    中值滤波的难点是"窗口大小". 一般从小到大试验. 一般二维效果好于一维,不同形状的窗口会有不同的效果,根据需求选择.
  • 频率域锐化

在这里插入图片描述
(无论是空间域还是频率域)高通滤波器在增强细节的同时也会增强噪声, 所以不能随意使用.

  • 频率域增强
    频率域增强的过程:傅里叶变换后选择合适的滤波器对频率成分进行处理,然后逆傅里叶变换.

在这里插入图片描述

  • 逆滤波恢复
    时域恢复—Convolution 卷积
    频域恢复—时域的卷积对应频域的乘法,而傅里叶变换的快速实现使得频域处理应用更为广泛.
  • 图像几何校正
    为什么要进行几何校正? ----
    比如用相机广角拍摄时远处建筑通常是歪斜的.

图像编码和压缩

在这里插入图片描述

  • 压缩的前提自然是可以压缩,即压缩后在视觉上不会有多大区别,或者说人眼看不出来.
    图像存在数据冗余和主观视觉冗余, 压缩方式也就从这两个方面开展,有损or无损.
  • "压缩"在本质上是以尽可能少的数据传输尽可能多的信息. 压缩的办法是消除冗余,具体通过编码实现.
  • 冗余大致分为三类:
    在这里插入图片描述

正常人眼在25cm明视距离下可以分辨0.1mm.

  • 视觉冗余指某些颜色之间的差别其实人眼是看不出来的,详询舌形图.
    理论上有2242^{24}种颜色,但是实际人眼只能分辨一小部分,显示器也只能显示部分颜色.

编码方式

统计编码, 预测编码,变换编码.

  • 统计编码是指根据图像像素灰度值出现的概率的分布特性而进行的压缩编码.
    统计编码包括行程编码,Huffman编码,
    • 行程编码: e.g. aaabcccccccc 描述为3a1b8c ,12个字节变成了6bytes.
    • Huffman编码: 灰度值频率排序,高频的用短码.
  • 预测编码—相关性.

编码与压缩标准

静止图像格式—jpeg

几乎所有的软件都是支持jpeg格式. jpeg包括DCT和Huffman编码,有损压缩.

活动图像格式—MPEG.

  • (MPEG-4)—流媒体,帧与帧间相关性.
  • mpeg-7 ----多媒体信息的搜索.

分割提取

图像边缘的定义: 图像中灰度值有阶跃变化或屋顶变化的像素的集合.

屋顶变化:位于灰度值从增加到减少的变化转折点.像屋顶一样中间高两边低.

凹凸性:连接这个图形内任意两个像素的线段如果不通过这个图形以外的像素,则它是凸的.
形状特征提取&纹理特征提取.

目标检测识别 影像匹配镶嵌

模板匹配. 模式识别的方法包括统计模式识别(概率分类法和聚类分析),模糊模式识别,句法模式识别,人工神经网络方法 4种.

影像镶嵌是指将两幅或多幅影像拼在一起,构成一幅整体影像的技术过程。

图像分割:基于图论 , 基于分水岭.

2018-06-11 00:17:06 weixin_42078760 阅读数 11320



图像处理:利用计算机对图像进行去除噪声、增强、复原、分割、特征提取、识别、等处理的理论、方法和技术。狭义的图像处理主要是对图像进行各种加工,以改变图像的视觉效果并为自动识别奠定基础,或对图像进行压缩编码以减少所需存储空间。

图像分析:对图像中感兴趣的目标进行检测和测量,以获得他们的客观信息,从而建立对图像的描述。

图像理解:重点是在图像分析的基础上,进一步研究图像中各目标的性质和它们之间的相互联系,并得出对图像内容含义的理解以及对原来客观场景的解释,从而指导和规划行动。

三者之间的联系:图像处理是比较低层的操作,它主要在图像像素级上进行处理,处理的数据量非常大。图像分析则进入了中层,分割和特征提取把原来以像素描述的图像转变成比较简洁的非图形式的描述。图像理解主要是高层操作,基本上式对从描述抽象出来的符号进行运算,其处理过程和方法与人类的思维推理有许多类似之处。

数字图像处理

阅读数 1803

没有更多推荐了,返回首页