图像处理之直方图匹配.

图像处理之直方图匹配.
图像处理之直方图匹配.

直方图匹配,又称直方图规定化,即变换原图的直方图为规定的某种形式的直方图,从而使两幅图像具有类似的色调和反差。直方图匹配属于非线性点运算。

直方图规定化的原理:对两个直方图都做均衡化,变成相同的归一化的均匀直方图,以此均匀直方图为媒介,再对参考图像做均衡化的逆运算

///

/// 直方图匹配

///

/// 原始图像

/// 匹配图像

/// 处理后图像

/// 处理成功true 失败false

public static bool HistogramMatching(Bitmap srcBmp, Bitmap matchingBmp, out Bitmap dstBmp) {

if (srcBmp == null || matchingBmp == null) {

dstBmp = null;

return false;

}

dstBmp = new Bitmap(srcBmp);

Bitmap tempSrcBmp = new Bitmap(srcBmp);

Bitmap tempMatchingBmp = new Bitmap(matchingBmp);

double[] srcCpR = null;

double[] srcCpG = null;

double[] srcCpB = null;

double[] matchCpB = null;

double[] matchCpG = null;

double[] matchCpR = null;

//分别计算两幅图像的累计概率分布

getCumulativeProbabilityRGB(tempSrcBmp, out srcCpR, out srcCpG, out srcCpB);

getCumulativeProbabilityRGB(tempMatchingBmp, out matchCpR, out matchCpG, out matchCpB);

double diffAR = 0, diffBR = 0, diffAG = 0, diffBG = 0, diffAB = 0, diffBB = 0;

byte kR = 0, kG = 0, kB = 0;

//逆映射函数

byte[] mapPixelR = new byte[256];

byte[] mapPixelG = new byte[256];

byte[] mapPixelB = new byte[256];

//分别计算RGB三个分量的逆映射函数

//R

for (int i = 0; i < 256; i++) {

diffBR = 1;

for (int j = kR; j < 256; j++) {

//找到两个累计分布函数中最相似的位置

diffAR = Math.Abs(srcCpR[i] - matchCpR[j]);

if (diffAR - diffBR < 1.0E-08) {//当两概率之差小于0.000000001时可近似认为相等

diffBR = diffAR;

//记录下此时的灰度级

kR = (byte)j;

}

else {

kR = (byte)Math.Abs(j - 1);

break;

}

}

if (kR == 255) {

for (int l = i; l < 256; l++) {

mapPixelR[l] = kR;

}

break;

}

mapPixelR[i] = kR;

}

//G

for (int i = 0; i < 256; i++) {

diffBG = 1;

for (int j = kG; j < 256; j++) {

diffAG = Math.Abs(srcCpG[i] - matchCpG[j]);

if (diffAG - diffBG < 1.0E-08) {

diffBG = diffAG;

kG = (byte)j;

}

else {

kG = (byte)Math.Abs(j - 1);

break;

}

}

if (kG == 255) {

for (int l = i; l < 256; l++) {

mapPixelG[l] = kG;

}

break;

}

mapPixelG[i] = kG;

}

//B

for (int i = 0; i < 256; i++) {

diffBB = 1;

for (int j = kB; j < 256; j++) {

diffAB = Math.Abs(srcCpB[i] - matchCpB[j]);

if (diffAB - diffBB < 1.0E-08) {

diffBB = diffAB;

kB = (byte)j;

}

else {

kB = (byte)Math.Abs(j - 1);

break;

}

}

if (kB == 255) {

for (int l = i; l < 256; l++) {

mapPixelB[l] = kB;

}

break;

}

mapPixelB[i] = kB;

}

//映射变换

BitmapData bmpData = dstBmp.LockBits(new Rectangle(0, 0, dstBmp.Width, dstBmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

unsafe {

byte* ptr = null;

for (int i = 0; i < dstBmp.Height; i++) {

ptr = (byte*)bmpData.Scan0 + i * bmpData.Stride;

for (int j = 0; j < dstBmp.Width; j++) {

ptr[j * 3 + 2] = mapPixelR[ptr[j * 3 + 2]];

ptr[j * 3 + 1] = mapPixelG[ptr[j * 3 + 1]];

ptr[j * 3] = mapPixelB[ptr[j * 3]];

}

}

}

dstBmp.UnlockBits(bmpData);

return true;

}

///

/// 计算各个图像分量的累计概率分布

///

/// 原始图像

/// R分量累计概率分布

/// G分量累计概率分布

/// B分量累计概率分布

private static void getCumulativeProbabilityRGB(Bitmap srcBmp, out double[] cpR, out double[] cpG, out double[] cpB) {

if (srcBmp == null) {

cpB = cpG = cpR = null;

return;

}

cpR = new double[256];

cpG = new double[256];

cpB = new double[256];

int[] hR = null;

int[] hG = null;

int[] hB = null;

double[] tempR = new double[256];

double[] tempG = new double[256];

double[] tempB = new double[256];

getHistogramRGB(srcBmp, out hR, out hG, out hB);

int totalPxl = srcBmp.Width * srcBmp.Height;

for (int i = 0; i < 256; i++) {

if (i != 0) {

tempR[i] = tempR[i - 1] + hR[i];

tempG[i] = tempG[i - 1] + hG[i];

tempB[i] = tempB[i - 1] + hB[i];

}

else {

tempR[0] = hR[0];

tempG[0] = hG[0];

tempB[0] = hB[0];

}

cpR[i] = (tempR[i] / totalPxl);

cpG[i] = (tempG[i] / totalPxl);

cpB[i] = (tempB[i] / totalPxl);

}

}

///

/// 获取图像三个分量的直方图数据

///

/// 图像

/// R分量直方图数据

/// G分量直方图数据

/// B分量直方图数据

public static void getHistogramRGB(Bitmap srcBmp, out int[] hR, out int[] hG, out int[] hB) {

if (srcBmp == null) {

hR = hB = hG = null;

return;

}

hR = new int[256];

hB = new int[256];

hG = new int[256];

BitmapData bmpData = srcBmp.LockBits(new Rectangle(0, 0, srcBmp.Width, srcBmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

unsafe {

byte* ptr = null;

for (int i = 0; i < srcBmp.Height; i++) {

ptr = (byte*)bmpData.Scan0 + i * bmpData.Stride;

for (int j = 0; j < srcBmp.Width; j++) {

hB[ptr[j * 3]]++;

hG[ptr[j * 3 + 1]]++;

hR[ptr[j * 3 + 2]]++;

}

}

}

srcBmp.UnlockBits(bmpData);

return;

}

基于Matlab编程仿真的直方图均衡化图像质量改善

基于直方图均衡的图像质量改善 班级:测控1004学号:2013270162姓名:杨明 摘要:为了解决灰度图像的灰度值分布集中在较窄的范围内,图像的细节不够清晰,对比度较低的问题。通过直方图均衡化使图像的灰度范围拉开或使灰度均匀分布,从而增大反差,使图像的细节清晰,以达到增强目的,直方图均衡化可得到任意的均匀直方图灰度图像。直方图均衡化是一种行之有效的图像增强方法,直方图均衡化是将原灰度图像的直方图通过变换函数变为均匀的直方图,然后按均匀直方图修改原图像,从而获得一幅灰度分布均匀的新图像。基于Matlab编程和工具箱的使用,实现图像直方图均衡化的图像仿真。 关键词:直方图均衡化;图像增强;Matlab Abstract: In order to solve the gray image gray value distribution concentrated in a narrow range of image detail is not clear enough, the problem of low contrast. Gray histogram equalization range so that the gradation image or pulled evenly distributed, thereby increasing the contrast, so that a clear image detail, in order to achieve the purpose of enhancing, histogram equalization histogram obtained arbitrary uniform gray image . Histogram equalization is an effective method for image enhancement, histogram equalization is the histogram of the original gray-scale image by histogram transformation function becomes uniform, a uniform histogram modification then the original image, thereby obtaining a a gray uniform distribution of the new image. Matlab toolbox based programming and the use of image histogram equalization image simulation. Keywords: histogram equalization; image enhancement; Matlab

数字图像处理实验四

数字图像处理 实验 实验四:图像增强—直方图变换学院:信息工程学院 姓名: 学号: 专业及班级: 指导教师:

一、实验目的 1.掌握灰度直方图的概念及其计算方法; 2.熟练掌握直力图均衡化和直方图规定化的计算过程; 3.熟练掌握空域滤波中常用的平滑和锐化滤波器; 4.掌握色彩直方图的概念和计算方法; 5.利用MATLAB程序进行图像增强。 二、实验内容 图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。本实验以直方图均衡化增强图像对比度的方法为主要内容,其他方法同学们可以在课后自行联系。 直方图是多种空间城处理技术的基础。直方图操作能有效地用于图像增强。除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。直方图在软件中易于计算,也适用于商用硬件设备,因此,它们成为了实时图像处理的一个流行工具。 直方图是图像的最基本的统计特征,它反映的是图像的灰度值的分布情况。直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。灰度直方图是图像预处理中涉及最广泛的基本概念之一。 图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。 直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。 三、实验具体实现 显示原图像的直方图和经过均衡化处理过的图像直方图: I=imread('1.jpg'); % 读入原图像 J=histeq(I); %对原图像进行直方图均衡化处理 subplot(2,2,1) ;imshow(I); %显示原图像 title('原图像'); %给原图像加标题名 %对原图像进行屏幕控制;显示直方图均衡化后的图像 subplot(2,2,2) ;imshow(J); %给直方图均衡化后的图像加标题名 title('直方图均衡化后的图像') ; %对直方图均衡化后图像进行屏幕控制;作一幅子图,并排两幅图的第1幅 subplot(2,2,3) ; imhist(I,64); %将原图像直方图显示为64级灰度 title('原图像直方图') ; %给原图像直方图加标题名

东南大学数字图像处理实验报告

数字图像处理 实验报告 学号:04211734 姓名:付永钦 日期:2014/6/7 1.图像直方图统计 ①原理:灰度直方图是将数字图像的所有像素,按照灰度值的大小,统计其所出现的频度。 通常,灰度直方图的横坐标表示灰度值,纵坐标为半个像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。 ②算法: clear all PS=imread('girl-grey1.jpg'); %读入JPG彩色图像文件figure(1);subplot(1,2,1);imshow(PS);title('原图像灰度图'); [m,n]=size(PS); %测量图像尺寸参数 GP=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255 GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率end figure(1);subplot(1,2,2);bar(0:255,GP,'g') %绘制直方图 axis([0 255 min(GP) max(GP)]); title('原图像直方图') xlabel('灰度值') ylabel('出现概率') ③处理结果:

原图像灰度图 100 200 0.005 0.010.0150.020.025 0.030.035 0.04原图像直方图 灰度值 出现概率 ④结果分析:由图可以看出,原图像的灰度直方图比较集中。 2. 图像的线性变换 ①原理:直方图均衡方法的基本原理是:对在图像中像素个数多的灰度值(即对画面起主 要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。从而达到清晰图像的目的。 ②算法: clear all %一,图像的预处理,读入彩色图像将其灰度化 PS=imread('girl-grey1.jpg'); figure(1);subplot(2,2,1);imshow(PS);title('原图像灰度图'); %二,绘制直方图 [m,n]=size(PS); %测量图像尺寸参数 GP=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255

数字图像处理点运算和直方图处理

实验1 点运算和直方图处理 一、实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理。 3. 进一步理解利用点操作这一方法进行图像处理的特点。 4. 掌握利用Matlab图像工具箱进行直方图均衡化的基本方法。 二、实验的硬件、软件平台 硬件:计算机 软件:操作系统:WINDOWS 7 应用软件:MATLAB 三、实验内容及步骤 1. 了解Matlab图像工具箱的使用。 2. 利用Matlab图像工具箱对图像进行点操作,要求完成下列3个题目中 的至少2个。 ⑴图1灰度范围偏小,且灰度偏低,改正之。 ⑵图2暗处细节分辨不清,使其能看清楚。 ⑶图3亮处细节分辨不清,使其能看清楚。 图1 图2 图3 3. 给出处理前后图像的直方图。 4. 利用MatLab图像处理工具箱中函数对以上图像进行直方图均衡化操 作,观察结果。 四、思考题 1. 点操作能完成哪些图像增强功能? 2. 直方图均衡化后直方图为何并不平坦?为何灰度级会减少? 五、实验报告要求

1.对点操作的原理进行说明。 2.给出程序清单和注释。 3.对处理过程和结果进行分析(包括对处理前后图像的直方图的分析)。 实验代码以及解读 点操作: I = imread('POINT1.BMP')。 %读入图像 j=rgb2gray(I)。%将图像转为灰度图像 INFO=IMFINFO('POINT1.BMP') %获取图片的格式、尺寸、颜色数量、修改时间等信息[l,r]=size(j)。%图片大小 figure。%建立一个图形框 subplot(221) imshow(j) %在两行两列的第一个位置放置图片j title('POINT1.BMP') %给该图片加上标题POINT1.BMP for m=1:l for n=1:r %从第一个像素循环到最后一个像素p1(m,n)=j(m,n)*1.2。%把各点乘上1.2得到p1图 end end for m=1:l for n=1:r p2(m,n)=j(m,n)*2。%%把各点乘上2得到p2图 end end for m=1:l for n=1:r p3(m,n)=j(m,n)*2+50。%把各点乘上2再加50得到p2图 end end subplot(222) imshow(p1) title('j(m,n)*1.2') %p1图放在第二个位置且冠名j(m,n)*1.2 subplot(223) imshow(p2) title('j(m,n)*2') %p1图放在第三个位置且冠名j(m,n)* 2 subplot(224) imshow(p3) title('j(m,n)*2+50') %p1图放在第四个位置且冠名j(m,n)*2+50 figure。%建立一个新的窗口并且依次显示以上四个图的直方图

数字图像处理实验报告--直方图均衡化

数字图像处理实验报告 实验名称:直方图均衡化 : 班级: 学号: 专业:电子信息工程(2+2) 指导教师:华华 实验日期:2012年5月24日

直方图均衡化 图像对比度增强的方法可以分成两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。直方图均衡化是最常见的间接对比度增强方法。直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。 直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度围的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度围的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。 缺点: 1)变换后图像的灰度级减少,某些细节消失; 2)某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。 直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。 这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。 直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态围从而可达到增强图像整体对比度的效果。设原始图像在(x,y)处的灰度为f,而改变后的图像为g,则对图像增强的方法可表述为将在(x,y)处的灰度f映射为g。在灰度直方图均衡化处理中对图像的映射函数可定义为:g = EQ (f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数): (1)EQ(f)在0≤f≤L-1围是一个单值单增函数。这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。 (2)对于0≤f≤L-1有0≤g≤L-1,这个条件保证了变换前后灰度值动态围的一致性。 累积分布函数即可以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换成g的均匀分布。此时的直方图均衡化映射函数为: gk = EQ(fk) = (ni/n) = pf(fi) , (k=0,1,2,……,L-1) 上述求和区间为0到k,根据该方程可以由源图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布求出fk到gk的灰度映射关系。在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对

基于颜色直方图的图像检索(实验分析)

基于颜色直方图的图像检索 作者:吴亚平学号:200812017081203009 1.概述 在过去的十几年间,有许多知名机构都对图像检索系统进行了深入的研究,病开发出了相应的检索系统,例如IBM Almaden研究中心研制的QBIC系统,Virage公司研发的VIRAGE系统,麻省理工大学多媒体实验室研发的Photobook系统,哥伦比亚大学研发的VisualSeek系统,斯坦福大学研发的WBIIS系统,U.C.伯克利分校研发的Blobworld系统等等。 这些检索系统的基本特征都是基于图像像素值的特征提取相应的规则图像,例如形状、颜色、纹理等,并以此为依据对图像进行比较检索,在这篇论文中,系统采用了基于颜色特征提取的检索。基于直方图在两个颜色空间对图像特征进行判定检索。这两个颜色空间是RGB和HSV。通过对两副图像对应的RGB和HSV 值计算其距离,依据距离的远近来判断相似性,这种方法简单易行,由于丢弃了图像的形状、颜色、纹理等信息,判定的计算量相对较小。当然这也导致了两副图像之间的判定没有实际的语义上的关联,也就是说,距离相近的图像并不一定有事实上的相应联系。但是,经过试验的判定,这种基于直方图的图像检索系统能够为图片检索提供相对精确的检索结果。 2.相关知识 2.1. RGB颜色空间 RGB颜色模型中每种颜色都是由红绿蓝三种颜色组成。这种颜色模型在许多CRT显示器和彩色光栅图形设备中被广泛使用。这三种颜色被认为是其他颜色的

添加剂,对于所需要的颜色通过对这三种颜色进行不同的比例进行相加即可得到。RGB模型可以用如下的颜色坐标系表示。注意从(0,0,0)到(1,1,1)的对角线,白色代表了灰阶,RGB色彩模式俯视从白色开始的。 2.2. HSV颜色空间(也称HIS颜色空间) HSV字母分别代表了色度(Hue),饱和度(Saturation),色调。上面的锥形图说明HSV的颜色模型。Value代表了颜色的强度,他是从图像信息中分离出来,可以表示相关信息的部分。色度和饱和度代表了颜色在人眼中的生理特征。色度与红色等颜色从0到1的表示不同,色度是从红色通过黄,绿,青,蓝,洋红色,再回到红色。饱和度的区分是从0 到 1,他通过值大小来影响颜色的饱和度。对于色调,也是从0到1,随着他的增大,图像的颜色就会越来越亮。

图像处理与分析实习内容

图像处理与分析 实习报告 学院:信息工程学院 专业:摄影测量与遥感 姓名:王新 学号: 120111267

第一部Matlab图像操作 (1)用Matlab的图像文件读取函数imread,熟练掌握对不同图像的格式进行读取。用Matlab的图像显示函数对不同的图像数据加以显示。掌握bmp/tiff/jpeg 三种常用图像文件格式,举例说明三种文件格式的适用场合。 步骤: 以tif格式图片的读取与显示为例: >>I1=imread(‘F:\MATLAB701\toolbox\images\imdemos\cameraman.tif’); %读取cameraman.tif >>imshow(I1); %显示cameraman.tif bmp和jpeg格式的图像的读取与显示类似。 三种文件格式的适用场合: 1)BMP:BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式,但是不受Web 浏览器支持。 2)TIFF:TIFF图像文件是由Aldus和Microsoft公司为桌上出版系统研制开发的一种较为通用的图像文件格式,适用于在应用程序之间和计算机平台之间的交换文件,是文档图像和文档管理系统中的标准格式。它的出现使得图像数据交换变得简单。TIFF 可以被认为是印刷行业中受到支持最广的图形文件格式。TIFF 支持可选压缩,不适用于在 Web 浏览器中查看。 3)JPEG:JPEG是一种支持8位和24位色彩的压缩位图格式,适合在网络上传输,是非常流行的图形文件格式,是可以把文件压缩到最小的格式。JPEG格式的应用非常广泛,特别是在网络和光盘读物上,都能找到它的身影。目前各类浏览器均支持JPEG这种图像格式。JPEG不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片。 (2)图像变换。完成输入图像的平移、缩放、旋转的编码实现。若调用他人库函数,要求掌握各几何变换的实现算法过程。 1)平移 F=imread('p2.bmp'); se = translate(strel(1), [10 20]); %参数[10 20]可以修改,修改后平移距离对应改变 J = imdilate(F,se); figure; imshow(J,[]);title('右移后图形'); 2)缩放 I=imread('D:\MATLABSETUP\toolbox\images\imdemos\cameraman.tif'); J1=imresize(I,0.2);%缩放为0.2倍

数字图像处理报告

《数字图像处理》 实验报告 院系:XXXXX 学号:XXXXXXX 姓名:XXX 指导老师:XX XX 完成时间:2020.02.02

题目一: (1)将宽为2n的正方形图像,用FFT算法从空域变换到频域,并用频域图像的模来进行显示; (2)使图像能量中心,对应到几何中心,并用频域图像的模来进行显示; (3)将频域图象,通过FFT逆变换到空域,并显示。 该题实现环境为操作系统:Windows 10 操作系统;编程环境:VS2013;内部核心处理算法库:OpenCV。 此题目的具体实现过程及其展示如下所示:

} imshow("原始图像", srcImage); //将输入图像延扩到最佳的尺寸,边界用0补充 int m = getOptimalDFTSize(srcImage.rows); int n = getOptimalDFTSize(srcImage.cols); //将添加的像素初始化为0. Mat padded; copyMakeBorder(srcImage, padded,0, m - srcImage.rows,0, n -srcImage.cols, BORDER_CONSTANT, Scalar::all(0)); //为傅立叶变换的结果(实部和虚部)分配存储空间。 //将planes数组组合合并成一个多通道的数组complexI Mat planes[]={ Mat_(padded), Mat::zeros(padded.size(), CV_32F)}; Mat complexI; merge(planes,2, complexI); //进行就地离散傅里叶变换 dft(complexI, complexI); //将复数转换为幅值,即=> log(1 + sqrt(Re(DFT(I))^2 + Im(DFT(I))^2)) split(complexI, planes); // 将多通道数组complexI分离成几个单通道数组,planes[0] = Re(DFT(I), //planes[1] = Im(DFT(I))

直方图均衡化处理教学内容

实验 1.直方图均衡化程序的原理及步骤 直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某灰度区间变成在全部灰度范围内的均匀分布。 直方图均衡化的原理: 直方图均衡化是把原图像的直方图通过灰度变换函数修正为灰度均匀分布的直方图,然后按均衡直方图修正原图像,其变换函数取决于图像灰度直方图的累积分布函数。概括地说,就是把一已知灰度概率分布的图像,经过一种变换,使之演变成一幅具有均匀概率分布的新图像。当图像的直方图为一均匀分布时,图像的信息熵最大,此时图像包含的信息量最大,图像看起来更清晰。灰度直方图用各灰度值出现的相对频数(该灰度级的像素数与图像总像素数之比)表示。 直方图表示数字图像中每一灰度级与其出现频数的的统计关系,用横坐标表示灰度级,纵坐标表示频数。直方图就能给出该图像的概貌性描述,例如图像的灰度范围、每个灰度级的频数和灰度的分布、整幅图像的亮度和平均明暗对比度等,由此可得出进一步处理的重要依据。计算每个灰度级出现的概率为: P r (r k )=N k /N k=0,1,2,…,L-1 上式中, P r (r k )表示第k 个灰度级出现的概率,N k 为第 k 个灰度级出现的频数,N 为图像像素总数,L 为图像中可能的灰度级总数。由此可得直方图均衡化变换函数,即图像的灰度累积分布函数Sk 为: 1,...,2,1,0)()(00-====∑∑==L k r P r T s k j N N k j j r k k j 上式中, S k 为归一化灰度级。 这个变换映射称做直方图均衡化或直方图线性化。 直方图均衡化过程如下: (1) 输出原图像; (2) 根据公式P r (r k )=n k /m*n ( k=0,1,2,…,L-1)计算对应灰度级出现的概率, 绘制原图像的直方图。 (3) 计算原图象的灰度级累积分布函数:sk=Σp r (r k ); (4) 取整Sk=round((S1*256)+0.5);将Sk 归一到相近的灰度级,绘制均衡化后的 直方图。 (5) 将每个像素归一化后的灰度值赋给这个像素,画出均衡化后的图像。 2.根据直方图均衡化步骤对输入的原图象进行处理,输出的图像如下图所示。

图像处理 实验报告

摘要: 图像处理,用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本内容图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。图像处理一般指数字图像处理。 数字图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。目前,图像处理演示系统应用领域广泛医学、军事、科研、商业等领域。因为数字图像处理技术易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。本图像处理演示系统以数字图像处理理论为基础,对某些常用功能进行界面化设计,便于初级用户的操作。 设计要求 可视化界面,采用多幅不同形式图像验证系统的正确性; 合理选择不同形式图像,反应各功能模块的效果及验证系统的正确性 对图像进行灰度级映射,对比分析变换前后的直方图变化; 1.课题目的与要求 目的: 基本功能:彩色图像转灰度图像 图像的几何空间变换:平移,旋转,剪切,缩放 图像的算术处理:加、减、乘 图像的灰度拉伸方法(包含参数设置); 直方图的统计和绘制;直方图均衡化和规定化; 要求: 1、熟悉图像点运算、代数运算、几何运算的基本定

义和常见方法; 2、掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法 3、掌握在MATLAB中进行插值的方法 4、运用MATLAB语言进行图像的插值缩放和插值旋转等 5、学会运用图像的灰度拉伸方法 6、学会运用图像的直方图设计和绘制;以及均衡化和规定化 7、进一步熟悉了解MATLAB语言的应用,将数字图像处理更好的应用于实际2.课题设计内容描述 1>彩色图像转化灰度图像: 大部分图像都是RGB格式。RGB是指红,绿,蓝三色。通常是每一色都是256个级。相当于过去摄影里提到了8级灰阶。 真彩色图像通常是就是指RGB。通常是三个8位,合起来是24位。不过每一个颜色并不一定是8位。比如有些显卡可以显示16位,或者是32位。所以就有16位真彩和32位真彩。 在一些特殊环境下需要将真彩色转换成灰度图像。 1单独处理每一个颜色分量。 2.处理图像的“灰度“,有时候又称为“高度”。边缘加强,平滑,去噪,加 锐度等。 3.当用黑白打印机打印照片时,通常也需要将彩色转成灰白,处理后再打印 4.摄影里,通过黑白照片体现“型体”与“线条”,“光线”。 2>图像的几何空间变化: 图像平移是将图像进行上下左右的等比例变化,不改变图像的特征,只改变位置。 图像比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴按比例缩放fy倍,从而获得一幅新的图像。如果fx=fy,即在x轴方向和y轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果fx≠fy,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。 旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。

实验一 图像的点运算

实验一图像的点运算 实验1.1 直方图 一.实验目的 1.熟悉matlab图像处理工具箱及直方图函数的使用; 2.理解和掌握直方图原理和方法; 二.实验设备 1.PC机一台; 2.软件matlab。 三.程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自 带的图像,如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察图像matlab环境下的直方图分布。

(a)原始图像 (b)原始图像直方图 六.实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。 实验1.2 灰度均衡 一.实验目的 1.熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法; 二.实验设备 1.PC机一台; 2.软件matlab; 三.程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,3),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 a=histeq(I,256); %直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) %输出均衡化后图像 title('均衡化后图像') %在均衡化后图像中加标题 subplot(2,2,4),imhist(a) %输出均衡化后直方图

均值滤波 中值滤波 直方图均衡

实验报告 一.实验目的 对图像进行空域增强,实现均值滤波、中值滤波、直方图均衡。 二.实验内容 对加入椒盐噪声的图像进行均值滤波、中值滤波,对图像实现直方图均衡,通过改变图像的直方图来改变图像中像素的灰度,以达到图像增强的目标。 三.实验原理 均值滤波的原理 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身)。再用模板中的全体像素的平均值来代替原来像素值。 均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(,) x y,选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(,) u x y,即 x y,作为处理后图像在该点上的灰度值(,)

1 (,)(,)u x y f x y m = ∑,m 为该模板中包含当前像素在内的像素总个数。 中值滤波的原理 中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。中值滤波首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。中值滤波的目的是保护图像边缘的同时去除噪声。 在一维的情况下,中值滤波器是一个含有奇数个像素的窗口,在处理之后,将窗口正中的像素灰度值用窗口内各像素灰度值的中值来代替。设有一个维序列 12,,...n f f f ,取窗口长度为奇数m ,对此序列进行中值滤波,就是从输入序列中 相续抽出m 个数,,,,,i v i i v f f f -+,其中为窗口的中心值(1)/2v m =-,再将这 m 个点的数值按其数值大小排列,取其序号为正中间的那个数作为滤波输出。中 值滤波表达式为: {}v i i v i i f f f Med F +-=,,,, 对二维序列{X i,j }的中值滤波,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维中值滤波可表示为: {}为滤波窗口,A x Med F j i A j i ,,= 在实际使用窗口时,窗口的尺寸一般先用33?再取55?逐渐增大,直到其滤波效果满意为止。 由于中值滤波是非线性运算,在输入和输出之间的频率上不存在一一对应关系,故不能用一般线性滤波器频率特性的研究方法。设G 为输入信号频谱,F 为输出信号频谱,定义F G H /=为中值滤波器的频率响应特性,实现表明H 是与G 有关,呈不规则波动不大的曲线,其均值比较平坦,可以认为信号经中值滤波后,传输函数近似为1,即中值滤波对信号的频域影响不大,频谱基本不变。

直方图图像处理实验报告

数字图像处理实验 实验一 直方图处理 实验目的 ● 理解图像直方图的概念,掌握图像直方图的绘制方法 ● 掌握直方图均衡化的原理,并会用直方图均衡化对图像进行处理。 实验要求 1.读入图像,可使用imread 。 2.输出图像,可使用imshow 。 3.绘制图像pout.tif 的归一化的直方图,可使用IPT 函数imhist 。 4.对图像进行直方图均衡化,可使用IPT 函数histeq ,对均衡化前后的图像以及直方图进行对比。 实验原理 一幅数字图像在范围[0, G ]内共有L 个灰度等级,其直方图定义为离散函数 k k n r h =)( 其中r k 是区间[0, G ]内的第k 级亮度,n k 是灰度级为r k 的图像中的像素数。 通常,我们会用到归一化直方图,即使所用所有元素h (r k )除以图像中的像素总数n 所得到的图形: n n n r h r p k k k ==)()( 其中k =1,2,…,L 。 Matlab 中提供了IPT 函数imhist 来绘制图像的直方图,但是除此之外绘制直方图的方法还有很多,可以通过条形图、杆状图等方式来表示直方图。 直方图均衡化主要用于增强动态范围偏小的图像的反差。该方法的基本思想是把原始的直方图变换为均匀分布的形状,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。 直方图均衡化一般采用原始图的累计分布函数作为变换函数。假设灰度级归一化至范围[0, 1]内,p r (r )表示给定图像中的灰度级的概率密度函数,对于离散的灰度级,均衡化变换为: ∑ ∑=====k j j k j j r k k n n r p r T s 1 1 )()( 式中k =1,2,…,L ,s k 是输出图像中的亮度值,它对应于出入图像中的亮度值r k 。 实验心得: 1. matlab 的函数的功能很强大,一个简单的函数调用就可以解决复杂的问题。这样,就需要在函数调用时注意函数的参数,否则很容易出错。比如函数 histeq(a,n),就要注意其中的n 为灰度值的个数。 2. 对于自己编写函数实现某些特定的功能时,需要对原理掌握清楚,如实验二中需自己编写函数实现图像的均衡,就要求对直方图的均衡原理掌握到位。

图像处理读书报告

傅里叶变换在图像处理中的应用 摘 要 为了有效的和快速的对图像进行处理和分析,常需要将原定义在图像空间的图像以某种形式转换(正变换)到另外一些空间,并利用在这些空间的特有性质方便进行一定的加工,最后再转换(反变换或逆变换)回图像空间以得到所需的效果。这些在不同空间转换的技术就是图像变换技术。傅里叶叶变换是一种基本和常用的变换,它把图像从图像空间(空域)转换到频率空间(频域)。 傅立叶变换研究是应用数学的一个重要方向,一个多世纪以来,傅立叶变换作为数学工具被迅速的应用到图像和语音分析等众多领域。通过在时空域和频率域来回切换图像,对图像的信息特征进行提取和分析,简化计算工作量,被誉为描述图像信息的第二种语言。 理论 正弦波就是一个圆周运动在一条直线上的投影。所以频域的基本单元也可以理解为一个始终在旋转的圆 傅里叶变换 傅里叶变换实际上是对一个周期无限大的函数进行傅里叶变换。 定义:单变量连续函数)(x f 的傅里叶变换)(u F 定义为等式 ?+∞ ∞-= dx e x f u F ux)xp(-j2)()(π 逆变换为: 1 ,...,2,1,02ex p )()(10-==∑-=M x M ux j u F x f M u π 二维离散傅里叶逆变换如下:

∑∑-=-=+=1010))//(2exp(),(),(M u N v N vy M ux j v u F y x f π 其中1,...,2,1,01,...,2,1,0u -=-=N v M 。 如果),(y x f 是实函数,则它的傅里叶变换必然为对称的,即 ),(),(v u F v u F --=* 其中“*”表示对复数的标准共轭操作。它遵循 ) ,(),(v u F v u F --= 其中,傅里叶变换的频率谱是对称的。 傅立叶变换在图像处理中的作用 1. 图像增强与图像去噪 绝大部分噪音都是图像的高频分量,通过低通滤波器来滤除高频——噪声;边缘也是图像的高频分量,可以通过添加高频分量来增强原始图像的边缘。 图像增强的原理: 图像增强从处理的作用域出发可分为空间域和频域两大类。其中,频域增强是将原空间的图像以某种形式转换到其他空间,然后利用该转换空间的特有性质进行图像处理,最后在转换回到原空间,得到处理后的图像,是一种间接增强的算法。 图像增强作为图像处理的重要组成部分,促进了图像增强方法研究的不断深入。目前主要有以下处理方法: 传统的图像增强的处理方法可以分为空域和频域图像增强两大类,其中频域图像增强的方法是对图像经傅里叶变换后的频谱成分进行操作,然后进行傅里叶逆变换得到所需结果,如低通滤波器、高通滤波器、带通和带阻滤波,同态滤波等。 有时候只采用一种方法往往得不到想要的结果,并且还没有出现一种方法能满足人们的任意需要,比如理想低通和高通滤波器并不是很实用,但是作为滤波概念发展的一部分,用来研究滤波器的特性非常有意义,一阶的巴特沃斯低通滤波器没有振铃现象,二阶的振铃通常微小,但是随着阶数的增高振铃便成为一个主要因素,高斯低通滤波器不会产生振铃现象,但是,在需要严格控制低频和高频之间截止频率的过渡的情况下,巴特沃斯滤波器更为合适,所以有时候就需要使用几种增强技术的组合方法。 图像增强示例

基于颜色特征的图像检索算法的实现

目录 摘要 (1) 关键字 (1) 1绪论 (1) 1.1 基于内容的图像检索的概念 (1) 1.2 基于内容的图像检索的发展历史 (1) 1.3 基于内容的图像检索的特点和主要应用 (1) 1.4 基于内容的图像检索的关键技术 (2) 1.5 国内外研究现状 (3) 1.5.1 国外研究现状 (3) 1.5.2 国内研究现状 (4) 2 基于颜色特征的图像检索方法 (4) 2.1 颜色度量体系 (4) 2.2 颜色空间 (5) 2.2.1 RGB颜色空间 (5) 2.2.2 HSV颜色空间 (5) 2.2.3 CMY颜色空间 (6) 3 颜色特征的表达 (7) 3.1 颜色直方图 (7) 3.2 累加直方图 (8) 4 图像特征的相似性匹配 (9) 4.1 距离度量方法 (9) 4.2直方图的交集的方法 (9) 4.3 欧式距离法 (9) 5 图像检索算法实现 (10) 5.1程序开发运行环境 (10) 5.2 程序检索逻辑 (10) 5.3 算法具体实现 (11) 5.4 实例演示 (14) 6 全文总结与展望 (15) 6.1 全文总结 (15) 6.2 展望 (15) 致谢 (15) 参考文献 (16) 英文摘要 (16)

基于颜色特征的图像检索算法的实现 摘要:文章介绍了一种基于颜色特征的图像检索技术的算法并给出了程序实现。首先介绍了基于内容的图像检索技术、发展历史及基于内容的图像检索技术的特点和主要应用,并在此基础上探讨了该领域所用到的一些关键技术。文章着重探讨了图像的颜色空间、图像特征提取及图像相似性度量等内容,并利用matlab技术实现了一个简单图像检索的程序。文章最后则对当前基于内容图像检索技术研究热点和今后的发展方向进行简单的阐述。 关键字:基于内容的图像检索;颜色特征;颜色直方图;相似度度量方法 1 绪论 1.1 基于内容的图像检索的概念 基于内容的图像检索[1](Content Based Image Retrieval, CBIR)是一项从图像数据库中找出与检索式内容相似的图像的检索技术。它利用从图像中自动抽取出来的底层特征,如颜色、纹理、轮廓和形状等特征,进行计算和比较,检索出符合用户需求的结果图像集。目前图像检索系统技术实现的基础是对底层特征信息的计算和比较,也即是“视觉相似”。 1.2 基于内容的图像检索的发展历史 图像检索技术的发展[2]可以分为两个阶段,第一阶段始于70年代,当时的图像检索是通过人工的标注来实现的,随着计算机技术和通信网技术的发展,特别是因特网的快速发展,图像数据的容量越来越大了,这种“以关键字找图”的方法越来越不适应检索技术的发展了。由于图像内容的丰富内涵以及人们对图像内容进行抽象时的主观性不同的人对同一幅图像有不同的理解,这就引入了主观多义,不利于检索。为了克服文本标注检索的弊端,90年代研究者提出了基于内容的图像检索,其方法是:根据图像的颜色特征、纹理特征、形状特征以及空间关系等作为索引,计算查询图像和目标图像之间的相似距离,然后按相似度匹配进行检索,这种技术很大程度地利用了人们的视觉客观特性,避免不同人对图像主观理解的不同而达不到理想的搜索效果。从研究方向的层面来看,基于内容的图像检索可分为三层:第一层是根据图像的底层特性来进行检索,如颜色、纹理,形状等等,涉及图像信息处理、图像分析和相似性匹配技术;第二层是基于图像对象语义,如图像中实体及实体之间的拓扑关系的检索,对象级检索技术建立在下层特征基础上,并引入了对象模型库、对象识别和人工智能等图像理解技术;第三层是基于图像的抽象属性如行为语义,情感语义和场景语义的推理学习来进行检索。需要用到知识库和更加有效的人工智能和神经网络技术。这三个层次由低到高,与人的认知接近,下一个层次通常包含了比上一个层次更高级的语义,更高层的语义往往通过较低层的语义推理获得。尽管经过了多年的研究,较为成熟的基于内容的图像检索技术目前仍处于底层水平,由于底层研究是上层研究的基础,为了给上层建立准确、有效的图像特征提取方法,底层的研究仍在不断的发展。 1.3 基于内容的图像检索的特点和主要应用 基于内容的图像检索技术有以下特点[3]: 一是它突破了传统的基于表达式检索的局限,从媒体内容中提取信息线索。

摄像头编程并且对图像的处理以及直方图的算法

题目:图像的基本处理班级:2011级软件2班姓名:刘磊磊 时间:20130907

摘要:随着数字化与多媒体时代的来临,数字图像处理已经成为必备的基础知识。全国各大专院校的计算机、电子、通信、医学、光学及许多相关专业都开设了与数字图像预处理相关的课程。数字图像二值化是图像预处理中的一项重要技术,其在模式识别、光学字符识别、医学成像等方面都有着重要应用。本论文主要为大家介绍24位真彩图像的灰度、二值处理以及图像的一些简单的打开和保存和如何画直方图,还有一些通过这次小学期学到的一些知识。 关键字:灰度处理,二值化 图像的打开 void CText1Dlg::ShowPic() { if(m_path =="") //判断图片路径是否存在 { return; } hwnd = GetDlgItem(IDC_pic); hDesDC = hwnd->GetDC()->m_hDC; hSrcDC = CreateCompatibleDC(hDesDC); hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),m_path,IMAGE_BITMAP,0,0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); GetObject(hBitmap, sizeof(BITMAP), &bm); SelectObject(hSrcDC, hBitmap); hwnd->GetClientRect(&rect); ::SetStretchBltMode(hDesDC,COLORONCOLOR); ::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY); UpdateData(false);

相关文档
最新文档