数字图像处理直方图与灰度处理
- 格式:pdf
- 大小:2.05 MB
- 文档页数:37
杭州电子科技大学课程名称:作业名称:指导教师:学生姓名:学生学号:一.题目要求与难点1.题目要求从下面的彩色图像中分割出珍珠并且检测出边缘。
如图1-1。
图.1-12.任务难点●珍珠颜色和大小不一致●珍珠上有许多光斑,影响检测●有些珍珠的颜色与背景颜色十分相近,不容易辨别●有些珍珠不完整,只在图片中显示一部分二.实现过程1.主要过程读入图像灰度化处理直方图均衡化Canny算子边缘检测Hough变换检测圆结果2.详细过程(1)灰度化处理现读入图像,将彩色的图像灰度化后进行预处理,将彩色图像的R,G,B三个通道转换为只有一个通道,便于图像的处理。
并且经过二值化处理后图像的计算也大大减少,也便于存储。
(2)直方图均衡化处理直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。
这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。
通过这种方法,亮度可以更好地在直方图上分布。
这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
图2-1 原图像的直方图图2-2 均衡化后的直方图(3)边缘检测图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。
有许多方法用于边缘检测,它们的绝大部分可以划分为两类:基于查找一类和基于零穿越的一类。
基于查找的方法通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向。
基于零穿越的方法通过寻找图像二阶导数零穿越来寻找边界,通常是Laplace过零点或者非线性差分表示的过零点。
Sobel边缘检测算法比较简,实际应用中效率比canny边缘检测效率要高,但是边缘不如Canny检测的准确,但是很多实际应用的场合,sobel边缘却是首选,尤其是对效率要求较高,而对细纹理不太关心的时候。
Canny边缘检测算法一直是边缘检测的经典算法。
目录实验一:数字图像的基本处理操作 (4):实验目的 (4):实验任务和要求 (4):实验步骤和结果 (5):结果分析 (8)实验二:图像的灰度变换和直方图变换 (9):实验目的 (9):实验任务和要求 (9):实验步骤和结果 (9):结果分析 (13)实验三:图像的平滑处理 (14):实验目的 (14):实验任务和要求 (14):实验步骤和结果 (14):结果分析 (18)实验四:图像的锐化处理 (19):实验目的 (19):实验任务和要求 (19):实验步骤和结果 (19):结果分析 (21)实验一:数字图像的基本处理操作:实验目的1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用;2、实现图像的读取、显示、代数运算和简单变换。
3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。
:实验任务和要求1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。
2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。
3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。
4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。
:实验步骤和结果1.对实验任务1的实现代码如下:a=imread('d:\');i=rgb2gray(a);I=im2bw(a,;subplot(1,3,1);imshow(a);title('原图像');subplot(1,3,2);imshow(i);title('灰度图像');subplot(1,3,3);imshow(I);title('二值图像');subplot(1,3,1);imshow(a);title('原图像');结果如图所示:图原图及其灰度图像,二值图像2.对实验任务2的实现代码如下:a=imread('d:\');A=imresize(a,[800 800]);b=imread('d:\');B=imresize(b,[800 800]);Z1=imadd(A,B);Z2=imsubtract(A,B);Z3=immultiply(A,B);Z4=imdivide(A,B);subplot(3,2,1);imshow(A);title('原图像 A'); subplot(3,2,2);imshow(B);title('原图像 B'); subplot(3,2,3);imshow(Z1);title('加法图像'); subplot(3,2,4);imshow(Z2);title('减法图像'); subplot(3,2,5);imshow(Z3);title('乘法图像'); subplot(3,2,6);imshow(Z2);title('除法图像');结果如图所示:3.对实验任务3的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j); %直流分量移到频谱中心I=log(abs(k)); %对数变换m=fftshift(j); %直流分量移到频谱中心RR=real(m); %取傅里叶变换的实部II=imag(m); %取傅里叶变换的虚部A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=circshift(s,[800 450]);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶变换频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶变换频谱');结果如图所示:4.对实验任务4的实现代码如下:s=imread('d:\');i=rgb2gray(s);i=double(i);j=fft2(i);k=fftshift(j);I=log(abs(k));m=fftshift(j);RR=real(m);II=imag(m);A=sqrt(RR.^2+II.^2);A=(A-min(min(A)))/(max(max(A)))*255;b=imrotate(s,-90);b=rgb2gray(b);b=double(b);c=fft2(b);e=fftshift(c);I=log(abs(e));f=fftshift(c);WW=real(f);ZZ=imag(f);B=sqrt(WW.^2+ZZ.^2);B=(B-min(min(B)))/(max(max(B)))*255;subplot(2,2,1);imshow(s);title('原图像');subplot(2,2,2);imshow(uint8(b));title('平移图像');subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱');结果如图所示::结果分析对MATLAB软件的操作开始时不太熟悉,许多语法和函数都不会使用,写出程序后,调试运行,最开始无法显示图像,检查原因,是有些标点符号没有在英文状态下输入和一些其他的细节,学会了imread(),imshow(),rgb2gray()等函数。
实验报告实验名称:图像处理姓名:刘强班级:电信1102学号:1404110128实验一图像变换实验——图像点运算、几何变换及正交变换一、实验条件PC机数字图像处理实验教学软件大量样图二、实验目的1、学习使用“数字图像处理实验教学软件系统”,能够进行图像处理方面的简单操作;2、熟悉图像点运算、几何变换及正交变换的基本原理,了解编程实现的具体步骤;3、观察图像的灰度直方图,明确直方图的作用和意义;4、观察图像点运算和几何变换的结果,比较不同参数条件下的变换效果;5、观察图像正交变换的结果,明确图像的空间频率分布情况。
三、实验原理1、图像灰度直方图、点运算和几何变换的基本原理及编程实现步骤图像灰度直方图是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度分布情况,为图像的相关处理操作提供了基本信息。
图像点运算是一种简单而重要的处理技术,它能让用户改变图像数据占据的灰度范围。
点运算可以看作是“从象素到象素”的复制操作,而这种复制操作是通过灰度变换函数实现的。
如果输入图像为A(x,y),输出图像为B(x,y),则点运算可以表示为:B(x,y)=f[A(x,y)]其中f(x)被称为灰度变换(Gray Scale Transformation,GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系。
一旦灰度变换函数确定,该点运算就完全确定下来了。
另外,点运算处理将改变图像的灰度直方图分布。
点运算又被称为对比度增强、对比度拉伸或灰度变换。
点运算一般包括灰度的线性变换、阈值变换、窗口变换、灰度拉伸和均衡等。
图像几何变换是图像的一种基本变换,通常包括图像镜像变换、图像转置、图像平移、图像缩放和图像旋转等,其理论基础主要是一些矩阵运算,详细原理可以参考有关书籍。
实验系统提供了图像灰度直方图、点运算和几何变换相关内容的文字说明,用户在操作过程中可以参考。
下面以图像点运算中的阈值变换为例给出编程实现的程序流程图,如下:2、图像正交变换的基本原理及编程实现步骤数字图像的处理方法主要有空域法和频域法,点运算和几何变换属于空域法。
Timg(原图) im_1(MATLAB均衡处理) im_2(ps均衡处理)原图的rgb直方图r通道直方图(原图)g通道直方图(原图)b通道直方图(原图)r通道直方图(im_1)g通道直方图(im_1)b通道直方图(im_1)r通道直方图(im_2)g通道直方图(im_2)b通道直方图(im_2)这里找到了一张对比度较低的图像timg,其原本的对比度很低。
之后分别用MATLAB和ps对其进行了直方图均衡,生成了im_1与im_2,可见其处理的效果是有区别的。
MATLAB处理的结果色彩更加艳丽但是相对于原图来说其每个区域的颜色和旁边的区域颜色差别会很巨大,就是使得边界更明显,同时对比度提高了很多。
而ps处理的结果可以看出新的直方图和原直方图相比产生了很多形状上的差别,可见ps的直方图均衡采用了更为复杂的算法。
同时图像对比度以及颜色艳丽的程度得到了提升,但是没有MATLAB处理的效果明显,保持了原图的色调以及部分颜色关系。
Ps中直方图均衡可以一键实现,因此在此不做重点描写,我们来看如何用MATLAB实现这种操作。
MATLAB代码如下:主程序:im=imread('timg.jpg');im_r=change(im(:,:,1));im_g=change(im(:,:,2));im_b=change(im(:,:,3));im1(:,:,1)=im_r;im1(:,:,2)=im_g;im1(:,:,3)=im_b;figure;imshow(im1);imwrite(im1,'im1.jpg');Change函数:function [n] = change(m)n=m;sum=0;for i=0:255for j=1:407for k=1:500if(m(j,k)==i)sum=sum+1;endendendchan=sum/(407*500);chan1=fix(chan*255+0.5);for j=1:407for k=1:500if(m(j,k)==i)n(j,k)=chan1;endendendend[x,xout] = hist(n(:), 0:255);figure;bar(xout, x); xlim([0 255]);MATLAB其实本身有实现直方图均衡效果的函数,这里为了理解算法自己做了这个函数。
数字图像处理知识点总结第一章导论1.图像:对客观对象的一种相似性的生动性的描述或写真。
2.图像分类:按可见性(可见图像、不可见图像),按波段数(单波段、多波段、超波段),按空间坐标和亮度的连续性(模拟和数字)。
3.图像处理:对图像进行一系列操作,以到达预期目的的技术。
4.图像处理三个层次:狭义图像处理、图像分析和图像理解.5.图像处理五个模块:采集、显示、存储、通信、处理和分析.第二章数字图像处理的基本概念6.模拟图像的表示:f(x,y)=i(x,y)×r(x,y),照度分量0< i(x,y)〈∞ ,反射分量0 <r(x,y)<1。
7.图像数字化:将一幅画面转化成计算机能处理的形式-—数字图像的过程。
它包括采样和量化两个过程。
像素的位置和灰度就是像素的属性。
8.将空间上连续的图像变换成离散点的操作称为采样.采样间隔和采样孔径的大小是两个很重要的参数。
采样方式:有缝、无缝和重叠.9.将像素灰度转换成离散的整数值的过程叫量化.10.表示像素明暗程度的整数称为像素的灰度级(或灰度值或灰度)。
11.数字图像根据灰度级数的差异可分为:黑白图像、灰度图像和彩色图像.12.采样间隔对图像质量的影响:一般来说,采样间隔越大,所得图像像素数越少,空间分辨率低,质量差,严重时出现像素呈块状的国际棋盘效应;采样间隔越小,所得图像像素数越多,空间分辨率高,图像质量好,但数据量大。
13.量化等级对图像质量的影响:量化等级越多,所得图像层次越丰富,灰度分辨率高,图像质量好,但数据量大;量化等级越少,图像层次欠丰富,灰度分辨率低,会出现假轮廓现象,图像质量变差,但数据量小.但在极少数情况下对固定图像大小时,减少灰度级能改善质量,产生这种情况的最可能原因是减少灰度级一般会增加图像的对比度.例如对细节比较丰富的图像数字化。
14.数字化器组成:1)采样孔:保证单独观测特定的像素而不受其它部分的影响。
2)图像扫描机构:使采样孔按预先确定的方式在图像上移动。
1.灰度变换与空间滤波一种成熟的医学技术被用于检测电子显微镜生成的某类图像。
为简化检测任务,技术决定采用数字图像处理技术。
发现了如下问题:(1)明亮且孤立的点是不感兴趣的点;(2)清晰度不够,特别是边缘区域不明显;(3)一些图像的对比度不够;(4)技术人员发现某些关键的信息只在灰度值为I1-I2的范围,因此,技术人员想保留I1-I2区间范围的图像,将其余灰度值显示为黑色。
(5)将处理后的I1-I2范围内的图像,线性扩展到0-255灰度,以适应于液晶显示器的显示。
请结合本章的数字图像处理处理,帮助技术人员解决这些问题。
1.1问题分析及多种方法提出(1)明亮且孤立的点是不够感兴趣的点对于明亮且孤立的点,其应为脉冲且灰度值为255(uint8)噪声,即盐噪声,为此,首先对下载的细胞图像增加盐噪声,再选择不同滤波方式进行滤除。
均值滤波:均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。
优点:速度快,实现简单;缺点:均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
其公式如下:使用矩阵表示该滤波器则为:中值滤波:滤除盐噪声首选的方法应为中值滤波,中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。
其过程为:a 、存储像素1,像素2.....像素9的值;b 、对像素值进行排序操作;c 、像素5的值即为数组排序后的中值。
优点:由于中值滤波本身为一种利用统计排序方法进行的非线性滤波方法,故可以滤除在排列矩阵两边分布的脉冲噪声,并较好的保留图像的细节信息。
缺点:当噪声密度较大时,使用中值滤波后,仍然会有较多的噪声点出现。
1. 数字数据传输通常用波特率度量,其定义为每秒钟传输的比特数。
通常的传输是以一个开始比特,一个字节(8 比特)的信息和一个停止比特组成的包完成的。
基于这个概念回答以下问题:(a) 用56K 波特的调制解调器传输一幅1024×1024、256 级灰度的图像需要用几分钟?(b) 以750K 波特[这是典型的电话DSL(数字用户线)连接的速度]传输要用多少时间?解:(a)T=M/56000=(1024×1024)×(8+2)/56000=187.25s=3.1min(b) T=M/56000=(1024×1024)×(8+2)/750000=14s2.两个图像子集S1和S2图下图所示。
对于V={1},确定这两个子集是(a)4-邻接,(b)8-邻接,(c)m-邻接。
a) S1 和S2 不是4 连接,因为q 不在N4(p)集中。
(b) S1 和S2 是8 连接,因为q 在N8(p)集中。
(c) S1 和S2 是m 连接,因为q 在集合N D(p)中,且N4(p)∩ N4(q)没有V 值的像素3. 考虑如下所示的图像分割(a) 令V={0,1}并计算p 和q 间的4,8,m 通路的最短长度。
如果在这两点间不存在特殊通路,试解释原因。
(b) 对于V={1,2}重复上题。
解:(a) 当V={0,1}时,p 和q 之间不存在4 邻接路径,因为不同时存在从p 到q 像素的4 毗邻像素和具备V 的值,如图(a)p 不能到达q。
8 邻接最短路径如图(b),最短长度为4。
m邻接路径如图(b)虚线箭头所示,最短长度为5。
这两种最短长度路径在此例中均具有唯一性。
(b) 当V={1, 2}时,最短的4 邻接通路的一种情况如图(c)所示,其长度为6,另一种情况,其长度也为6;8 邻接通路的一种情况如图(d)实线箭头所示,其最短长度为4;m 邻接通路的一种情况如图(d)虚线箭头所示,其最短长度为6.或解: (1) 在V={0,1}时,p和q之间通路的D4距离为∞,D8距离为4,Dm距离为5。
数字图像处理---直⽅图均衡化直⽅图均衡化的英⽂名称是Histogram Equalization. 图像对⽐度增强的⽅法可以分成两类:⼀类是直接对⽐度增强⽅法;另⼀类是间接对⽐度增强⽅法。
直⽅图拉伸和直⽅图均衡化是两种最常见的间接对⽐度增强⽅法。
直⽅图拉伸是通过对⽐度拉伸对直⽅图进⾏调整,从⽽“扩⼤”前景和背景灰度的差别,以达到增强对⽐度的⽬的,这种⽅法可以利⽤线性或⾮线性的⽅法来实现;直⽅图均衡化则通过使⽤累积函数对灰度值进⾏“调整”以实现对⽐度的增强。
直⽅图均衡化处理的“中⼼思想”是把原始图像的灰度直⽅图从⽐较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直⽅图均衡化就是对图像进⾏⾮线性拉伸,重新分配图像像素值,使⼀定灰度范围内的像素数量⼤致相同。
直⽅图均衡化就是把给定图像的直⽅图分布改变成“均匀”分布直⽅图分布。
缺点: 1)变换后图像的灰度级减少,某些细节消失; 2)某些图像,如直⽅图有⾼峰,经处理后对⽐度不⾃然的过分增强。
直⽅图均衡化是图像处理领域中利⽤图像直⽅图对对⽐度进⾏调整的⽅法。
这种⽅法通常⽤来增加许多图像的局部对⽐度,尤其是当图像的有⽤数据的对⽐度相当接近的时候。
通过这种⽅法,亮度可以更好地在直⽅图上分布。
这样就可以⽤于增强局部的对⽐度⽽不影响整体的对⽐度,直⽅图均衡化通过有效地扩展常⽤的亮度来实现这种功能。
这种⽅法对于背景和前景都太亮或者太暗的图像⾮常有⽤,这种⽅法尤其是可以带来X光图像中更好的⾻骼结构显⽰以及曝光过度或者曝光不⾜照⽚中更好的细节。
这种⽅法的⼀个主要优势是它是⼀个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直⽅图,并且计算量也不⼤。
这种⽅法的⼀个缺点是它对处理的数据不加选择,它可能会增加背景杂讯的对⽐度并且降低有⽤信号的对⽐度。
1.连续灰度值r:待处理图像的灰度。
假设r的取值区间[0,L-1], r = 0表⽰⿊⾊,r = L - 1表⽰⽩⾊。
《数字图像处理》实验内容及要求实验内容一、灰度图像的快速傅立叶变换1、 实验任务对一幅灰度图像实现快速傅立叶变换(DFT ),得到并显示出其频谱图,观察图像傅立叶变换的一些重要性质。
2、 实验条件微机一台、vc++6。
0集成开发环境。
3、实验原理傅立叶变换是一种常见的图像正交变换,通过变换可以减少图像数据的相关性,获取图像的整体特点,有利于用较少的数据量表示原始图像。
二维离散傅立叶变换的定义如下:112()00(,)(,)ux vy M N j M Nx y F u v f x y eπ---+===∑∑傅立叶反变换为:112()001(,)(,)ux vy M N j M Nu v f x y F u v eMNπ--+===∑∑式中变量u 、v 称为傅立叶变换的空间频率。
图像大小为M ×N.随着计算机技术和数字电路的迅速发展,离散傅立叶变换已经成为数字信号处理和图像处理的一种重要手段。
但是,离散傅立叶变换需要的计算量太大,运算时间长。
库里和图基提出的快速傅立叶变换大大减少了计算量和存储空间,因此本实验利用快速傅立叶变换来得到一幅灰度图像的频谱图。
快速傅立叶变换的基本思路是把序列分解成若干短序列,并与系数矩阵元素巧妙结合起来计算离散傅立叶变换.若按照奇偶序列将X(n)进行划分,设:()(2)()(21)g n x n h n x n =⎧⎨=+⎩ (n=0,1,2, (12)-)则一维傅立叶变换可以改写成下面的形式:1()()N mnNn X m x n W -==∑11220()()N N mn mnN N n n g n W h n W --===+∑∑ 1122(2)(21)(2)(21)NN m n m n N N n n x n W x n W --+===++∑∑1122022(2)(21)NN mn mn mN N N n n x n W x n W W --===++∑∑ =G(m)+mN W H(m)因此,一个求N 点的FFT 可以转换成两个求2N点的 FFT 。
数字图像处理之直⽅图均衡化直⽅图均衡化是图像处理领域中利⽤图像直⽅图对对⽐度进⾏调整的⽅法。
直⽅图均衡化要达到的效果:基本思想:把原始图的直⽅图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围,从⽽达到增强图像整体对⽐度的效果使⽤的⽅法是灰度级变换:s = T(r)原理:s=T(r) 0≤r≤1T(r)满⾜下列两个条件:(1)T(r)在区间0≤r≤1中为单值且单调递增(2)当0≤r≤1时,0≤T(r) ≤1条件(1)保证原图各灰度级在变换后仍保持从⿊到⽩(或从⽩到⿊)的排列次序条件(2)保证变换前后灰度值动态范围的⼀致性Pr(r)是r的概率密度函数,Ps(s)是s的概率密度函数,Pr(r)和T(r)已知,且T-1(s) 满⾜上述条件(1),所以有已知⼀种重要的变换函数:关于上限的定积分的导数就是该上限的积分值(莱布尼茨准则)对于离散值:其中r k 是第k个灰度级,k = 0,1,2,…,L-1. n k是图像中灰度级为r k的像素个数. n是图像中像素的总数.已知变换函数的离散形式为:sk称作直⽅图均衡化将输⼊图像中灰度级为rk(横坐标)的像素映射到输出图像中灰度级为sk (横坐标)的对应像素得到.实现代码:/******************************************************************************* 作⽤: 灰度均衡函数* 参数:* pixel 原始像素数组* tempPixel 保存变换后图像的像素数组* width 原始图像宽度******************************************************************************/void GrayEqualize(BYTE* pixel, BYTE* tempPixel, UINT width, UINT height){// 灰度映射表BYTE map[256];long lCounts[256];memset(lCounts, 0, sizeof(long) * 256);// 计算各灰度值个数for (UINT i = 0; i < width * height; i++){int x = pixel[i * 4];lCounts[x]++;}// 保存运算中的临时值long lTemp;for (int i = 0; i < 256; i++){lTemp = 0;for (int j = 0; j <= i; j++)lTemp += lCounts[j];map[i] = (BYTE)(lTemp * 255.0f / width / height);}// 变换后的值直接在映射表中查找for (UINT i = 0; i < width * height; i++){int x = pixel[i * 4];tempPixel[i*4] = tempPixel[i*4+1] = tempPixel[i*4+2] = pixel[i * 4]; tempPixel[i*4+3] = 255;}}View Code彩⾊图直⽅图均衡化:更清晰:opencv代码:////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>using namespace cv;using namespace std;int main( int argc, const char** argv ){Mat img = imread("MyPic.JPG", CV_LOAD_IMAGE_COLOR); //open and read the imageif (img.empty()) //if unsuccessful, exit the program{cout << "Image cannot be loaded..!!" << endl;return -1;}vector<Mat> channels;Mat img_hist_equalized;cvtColor(img, img_hist_equalized, CV_BGR2YCrCb); //change the color image from BGR to YCrCb formatsplit(img_hist_equalized,channels); //split the image into channelsequalizeHist(channels[0], channels[0]); //equalize histogram on the 1st channel (Y)merge(channels,img_hist_equalized); //merge 3 channels including the modified 1st channel into one imagecvtColor(img_hist_equalized, img_hist_equalized, CV_YCrCb2BGR); //change the color image from YCrCb to BGR format (to display image properly)//create windowsnamedWindow("Original Image", CV_WINDOW_AUTOSIZE);namedWindow("Histogram Equalized", CV_WINDOW_AUTOSIZE);//show the imageimshow("Original Image", img);imshow("Histogram Equalized", img_hist_equalized);waitKey(0); //wait for key pressdestroyAllWindows(); //destroy all open windowsreturn0;}View Code代码中使⽤的函数:New OpenCV functionscvtColor(img, img_hist_equalized, CV_BGR2YCrCb)This line converts the color space of BGR in 'img' to YCrCb color space and stores the resulting image in 'img_hist_equalized'.In the above example, I am going to equalize the histogram of color images. In this scenario, I have to equalize the histogram of the intensity component only, not the color components. So, BGR format cannot be used because its all three planes represent color components blue, green and red. So, I have to convert the original BGR color space to YCrCb color space because its 1st plane representsthe intensity of the image where as other planes represent the color components.void split(const Mat& m, vector<Mat>& mv )This function splits each channel of the 'm' multi-channel array into separate channels and stores them in a vector, referenced by 'mv'. Argument listconst Mat& m - Input multi-channel arrayvector<Mat>& mv - vector that stores the each channel of the input arrayequalizeHist(channels[0], channels[0]);Here we are only interested in the 1st channel (Y) because it represents the intensity information whereas other two channels (Cr and Cb) represent color components. So, we equalize the histogram of the 1st channel using OpenCV in-built function, 'equalizeHist(..)' and other two channels remain unchanged.void merge(const vector<Mat>& mv, OutputArray dst )This function does the reverse operation of the split function. It takes the vector of channels and create a single multi-channel array. Argument listconst vector<Mat>& mv - vector that holds several channels. All channels should have same size and same depthsOutputArray dst - stores the destination multi-channel arraycvtColor(img_hist_equalized, img_hist_equalized, CV_YCrCb2BGR)This line converts the image from YCrCb color space to BGR color space. It is essential to convert to BGR color space because 'imshow(..)' OpenCV function can only show images with that color space.This is the end of the explanation of new OpenCV functions, found in the above sample code. If you are not familiar with other OpenCV functions, please refer to the previous lessons.参考博客:http://opencv-srf.blogspot.jp/2013/08/histogram-equalization.html。
数字图像处理考试复习资料第⼀章:图像的概念: 图像是对客观存在的物体的⼀种相似性的、⽣动的写真或描述。
图像处理:对图像进⾏⼀系列操作,达到预期⽬的处理。
数字图像处理的三个层次:(1)狭义的图像处理:(图像——图像的过程)指对图像进⾏各种操作以改善图像的视觉效果或进⾏压缩编码减少存储空间和传输时间等。
(2)图像识别与分析:(图像——数值或符号的过程)对图像中感兴趣的⽬标进⾏检测和测量,建⽴对图像的描述。
(3)图像理解:(图像——描述及解释)在图像处理与识别的基础上,基于⼈⼯智能和认知理论,研究图像中各⽬标的性质和它们之间的相互联系,对图像内容的含义加以理解以及对原来景观场景加以描述,从⽽指导和规划⾏动。
数字图像处理的特点:(1)精度⾼:对于⼀幅图像⽽⾔,数字化时不管是⽤4⽐特还是8⽐特和其它⽐特表⽰,只需改变计算机中程序的参数,处理⽅法不变。
所以从原理上讲不管对多⾼精度的数字图像进⾏处理都是可能的。
⽽在模拟图像处理中,要想使精度提⾼⼀个数量级,就必须对装置进⾏⼤幅度改进。
(2)再现性好:不管是什么数字图像,均⽤数组或数组集合表⽰。
在传送和复制图像时,只在计算机内部进⾏处理,这样数据就不会丢失或遭破坏,保持了完好的再现性。
⽽在模拟图像处理过程中,就会因为各种⼲扰因素⽽⽆法保持图像的再现性。
(3)通⽤性、灵活性强:不管是可视图像还是X光图像、热红外图像、超声波图像等不可见光图像,尽管这些图像⽣成体系中的设备规模和精度各不相同,但当把这些图像数字化后,对于计算机来说,都可同样进⾏处理,这就是计算机处理图像的通⽤性。
第⼆章图像数字化是将⼀幅画⾯转化成计算机能处理的形式——数字图像的过程。
采样:将空间上连续的图像变换成离散点的操作称为采样。
采样间隔和采样孔径的⼤⼩是两个很重要的参数。
量化:将像素灰度转换成离散的整数值的过程叫量化。
⼀幅数字图像中不同灰度值的个数称为灰度级数,⽤G表⽰。
图像数字化⼀般采⽤均匀采样和均匀量化⽅式。
数字图像处理复习材料要点考试题型⼀、填空题(10分,10空)⼆、判断题(5分,5题)三、名词解释(15分,5题)图像,数字图像,数字图像处理,彩⾊图像,灰度图像,⾊度,采样,量化,灰度直⽅图,直⽅图均衡化,直⽅图规定化,图像增强,图像锐化,图像复原,图像滤化,中值滤波,均值滤波,数据压缩,⽆失真编码,⼏何畸变四、简答题(20分,4题)1.RGB,HIS模型2.视觉效应(判断,填空)3.图像复原(5.3 5.4 5.5 简答,名词解释)4.第六章5.7.2 边缘检测五、计算题(50分,5题)1.平移镜像错切(作业题)2.放⼤缩⼩(作业题)3.平滑,中值滤波,均值滤波(PPT)4.哈夫曼编码(参数计算,熵,效率,编码P148)5.均衡化(第四章P69 4.1)注意:看⼀下⼩波变换怎么⽤原理第⼀章绪论1.图像:对客观存在对象的⼀种相似性的、⽣动性的描述或写真。
2.模拟图像:空间坐标和明暗程度都是连续变化的、计算机⽆法直接处理的图像3.数字图像:空间坐标和灰度均不连续的、⽤离散的数字(⼀般整数)表⽰的图像(计算机能处理)。
是图像的数字表⽰,像素是其最⼩的单位。
4数字图像处理(Digital Image Processing):利⽤计算机对数字图像进⾏(去除噪声、增强、复原、分割、特征提取、识别等)系列操作,从⽽获得某种预期的结果的技术。
(计算机图像处理)5.数字图像处理的特点(优势):(1)处理精度⾼,再现性好。
(2)易于控制处理效果。
(3)处理的多样性。
(4)图像数据量庞⼤。
(5)图像处理技术综合性强。
6.数字图像处理的主要研究内容:(1)图像的数字化:如何将⼀幅光学图像表⽰成⼀组数字,既不失真⼜便于计算机分析处理;主要包括的是图像的采样与量化(2)图像的增强:加强图像的有⽤信息,消弱⼲扰和噪声(3)图像的恢复:把退化、模糊了的图像复原。
模糊的原因有许多种,最常见的有运动模糊,散焦模糊等(4)图像的编码:简化图像的表⽰,压缩表⽰图像的数据,以便于存储和传输。
第二章基本概念贾永红武汉大学第二章讲解内容1. 图像数字化概念、数字化参数对图像质量的影响、数字化器性能评价2. 图像灰度直方图的基本概念、计算、性质及其应用3.数字图像处理算法形式与数据结构4.图像图像文件格式与特征重点:图像数字化、图像灰度直方图和图像文件BMP格式难点:图像数字化、直方图应用、图像分层结构数据教学法:灵活应用示例法、启发式、提问法等目的:1. 熟悉本章基本概念和图像处理算法形式,了解图像的特征;2.重点掌握图像数字化图像灰度直方图的基本概念及应用、2.2 成象模型3-D客观场景到2-D成像平面的中心投影。
物方点空间坐标与对应的像方点坐标满足几何透视变换关系(共线条件)。
f(x,y)---理想成像面坐标点(x,y)的亮度i(x,y)---照度分量r(x,y)---反射分量,则f(x,y)=i(x,y)×r(x,y)其中:0< i(x,y)< ∞ ,0 <r(x ,y)<12.3图像数字化图像数字化是将一幅画面转化成计算机能处理的形式——数字图像的过程。
模拟图像数字图像正方形点阵具体来说,就是把一幅图画分割成如图2.3.1所示的一个个小区域(像元或像素),并将各小区域灰度用整数来表示,形成一幅点阵式的数字图像。
它包括采样和量化两个过程。
像素的位置和灰度就是像素的属性。
2.3.1采样将空间上连续的图像变换成离散点的操作称为采样。
采样间隔和采样孔径的大小是两个很重要的参数。
当对图像进行实际的抽样时,怎样选择各抽样点的间隔是个非常重要的问题。
关于这一点,图像包含何种程度的细微的浓淡变化,取决于希望忠实反映图像的程度。
不同形状的采样孔径2.3.2量化经采样图像被分割成空间上离散的像素,但其灰度是连续的,还不能用计算机进行处理。
将像素灰度转换成离散的整数值的过程叫量化。
表示像素明暗程度的整数称为像素的灰度级(或灰度值或灰度)。
一幅数字图像中不同灰度级的个数称为灰度级数,用G表示。
1.数字图像处理的方法(1)图像信息获取(2)图像信息存储(3)图像信息处理(4)图像描述(5)图像识别(6)图像理解2.数字图像处理的特点(1)再现性好(2)处理精度高(3)适用领域广泛(4)灵活性强(5)图像数据量庞大(6)占用频带较宽(7)图像质量评价受主观与因素的影响(8)数字图像处理涉及技术领域广泛3.图像在空间上的离散化称为采样,也就是用空间上部分点的灰度值代表图像,这些点称为采样点。
4.假定图像取M×N个采样点,每个像素量化后的二进制灰度值位数为Q(Q为2的整数幂),则存储一幅数字图像所需的二进制位数为b=M×N×Q字节数为B=M×N×Q/8(Byte)5.为了得到质量良好的图像可以采用如下原则:(1)对边缘逐渐变化的图像,应该增加量化等级,减少采样点数,以避免图像的假轮廓。
(2)对细节丰富的图像,应该增加采样点数,减少量化等级,以避免图像模糊(即混叠)。
6.图像的显示特性最重要的显示特性是图像的大小,光度分辨率,空间分辨率,低频响应和噪声特性。
7.颜色的三个属性:色调(H),饱和度(S),亮度(I )。
8.在印刷工业上,通常用CMYK颜色模型,它是通过颜色相减来产生其他颜色的,称为颜色合成法.9.在CMYK模型中,当所有四种分量的值都是0﹪时,就会产生纯白色。
10.由于RGB色彩模型的图像直接采用CMYK色彩模型打印会产生分色,所以要将使用的图像素材的RGB色彩模型转换为CMYK色彩模型11.Y=0.299R+0.587G+0.114B12.灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数,其横坐标是灰度级,纵坐标是该灰度出现的概率,即等于该会读的像素的个数与总像素之比。
13.一幅连续图像中被具有灰度级D的所有轮廓线所包围的面积,称为阈值面积函数表示为A(D)。
直方图可定义为H(D)=-dA(D)/d(D)14.直方图的性质(1)直方图是一幅图像中各像素灰度值出现次数的统计结果它只反映该图像中不同灰度值出现的次数,而不能反映某一灰度值像素所在位置。