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

数字图像处理实验报告1. 引言数字图像处理是使用计算机来处理和优化图像的一种技术。
在本实验中,我们将探索几种常见的数字图像处理方法,并使用Python编程语言和相关库来实现。
2. 实验目的本实验的主要目的是:1.了解图像的基本特性和数字图像处理的基本原理;2.熟悉Python编程语言和相关图像处理库的使用;3.实现常见的图像处理算法并进行实验验证。
3. 实验方法在本实验中,我们使用Python编程语言和以下相关库来实现图像处理算法:•OpenCV:用于图像读取、显示和保存等基本操作;•Numpy:用于图像数据的处理和算术运算;•Matplotlib:用于图像的可视化和结果展示。
以下是实验涉及到的图像处理方法和步骤:1.图像读取和显示:使用OpenCV库读取图像,使用Matplotlib库显示图像;2.图像的灰度化:将彩色图像转换为灰度图像;3.图像的二值化:将灰度图像转换为黑白二值图像;4.图像的平滑处理:使用平滑滤波器对图像进行平滑处理,如均值滤波和高斯滤波;5.图像的边缘检测:使用边缘检测算法对图像进行边缘检测,如Sobel算子和Canny算子;6.图像的直方图均衡化:对灰度图像进行直方图均衡化,增强图像的对比度。
4. 实验过程和结果4.1 图像读取和显示首先,我们使用OpenCV库读取一张图像,并使用Matplotlib库显示该图像:import cv2import matplotlib.pyplot as plt# 读取图像img = cv2.imread('image.jpg')# 显示图像plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.axis('off')plt.show()4.2 图像的灰度化接下来,我们将彩色图像转换为灰度图像:# 灰度化图像gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 显示灰度图像plt.imshow(gray_img, cmap='gray')plt.axis('off')plt.show()4.3 图像的二值化然后,我们将灰度图像转换为黑白二值图像:# 二值化图像_, binary_img = cv2.threshold(gray_img, 128, 255, cv2.THRESH_BINARY)# 显示二值图像plt.imshow(binary_img, cmap='gray')plt.axis('off')plt.show()4.4 图像的平滑处理接下来,我们使用平滑滤波器对图像进行平滑处理,例如使用5x5的均值滤波器和高斯滤波器:# 均值滤波mean_img = cv2.blur(img, (5, 5))# 高斯滤波gaussian_img = cv2.GaussianBlur(img, (5, 5), 0) # 显示平滑处理后的图像plt.figure(figsize=(10, 5))plt.subplot(121)plt.imshow(cv2.cvtColor(mean_img, cv2.COLOR_BGR2R GB))plt.title('Mean Filter')plt.axis('off')plt.subplot(122)plt.imshow(cv2.cvtColor(gaussian_img, cv2.COLOR_B GR2RGB))plt.title('Gaussian Filter')plt.axis('off')plt.show()4.5 图像的边缘检测然后,我们使用边缘检测算法对图像进行边缘检测,例如使用Sobel算子和Canny算子:# 边缘检测sobel_img = cv2.Sobel(gray_img, cv2.CV_8U, 1, 1, ksize=3)canny_img = cv2.Canny(gray_img, 50, 150)# 显示边缘检测结果plt.figure(figsize=(10, 5))plt.subplot(121)plt.imshow(sobel_img, cmap='gray')plt.title('Sobel Operator')plt.axis('off')plt.subplot(122)plt.imshow(canny_img, cmap='gray')plt.title('Canny Operator')plt.axis('off')plt.show()4.6 图像的直方图均衡化最后,我们对灰度图像进行直方图均衡化,以增强图像的对比度:# 直方图均衡化equalized_img = cv2.equalizeHist(gray_img)# 显示直方图均衡化结果plt.imshow(equalized_img, cmap='gray')plt.axis('off')plt.show()5. 实验总结通过本实验,我们熟悉了数字图像处理的基本方法和步骤,并使用Python编程语言和相关库实现了图像的读取、显示、灰度化、二值化、平滑处理、边缘检测和直方图均衡化等操作。
数字图像处理实习报告

数字图像处理实习报告
本次实习主要任务是进行数字图像处理相关工作,包括图像的预处理、特征提取、图像分割和图像识别等方面的工作。
实习过程中,我主要负责了图像处理算法的编写与优化,以及实验数据的收集与分析。
通过这次实习,我对数字图像处理技术有了更深入的了解,并且提升了自己的编程能力和团队协作能力。
在图像处理算法的编写与优化过程中,我主要使用了Python
语言和常用的图像处理库,如OpenCV和PIL等。
我研究了不同的图像处理算法,并对其进行了实验验证,优化了算法的性能和效果。
通过这些工作,我深入了解了图像处理算法的实现原理和优化方法,提升了自己在图像处理领域的技术水平。
在实验数据的收集与分析过程中,我主要负责了实验数据的采集和整理工作。
我使用了各种图像采集设备,包括相机、摄像头等,对不同场景下的图像进行了采集和整理。
然后我利用Python和Matlab等工具对实验数据进行了分析和结果展示,
为后续的图像处理算法提供了重要的支持和参考。
总的来说,这次实习让我对数字图像处理有了更深入的了解,提升了自己的技术能力和实践能力。
我在实习过程中遇到了不少困难和挑战,但通过团队合作和自我努力,最终都得以克服,取得了一定的成果。
通过这次实习,我深刻地感受到了数字图像处理技术的重要性和广阔的应用前景,也对自己未来的发展方向有了更清晰的认识。
希望通过这次实习的经历,我能够为将来的学习和工作打下坚实的基础。
数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告(一)实验目的1.理解数字图像处理的基本概念与原理。
2.掌握数字图像处理的基本方法。
3.掌握常用数字滤波器的性质和使用方法。
4.熟练应用数字图像处理软件进行图像处理。
实验器材计算机、MATLAB软件实验内容1.图像的读写与显示首先,我们需要在MATLAB中读入一幅图像,并进行显示。
% 导入图像文件I = imread('myimage.jpg');% 显示图像imshow(I);2.图像的分辨率与色彩空间转换数字图像处理中的一个重要概念是图像的分辨率,通常用像素数量表示。
图像的分辨率越高,代表着图像包含更多的像素,从而更具细节和清晰度。
在数字图像处理中,常常需要将一幅图像从一种色彩空间转换为另一种色彩空间。
RGB色彩空间是最常见的图像色彩空间之一,并且常常作为其他色彩空间的基础。
% 转换图像色彩空间J = rgb2gray(I);% 显示转换后的图像imshow(J);3.图像的增强与滤波图像的增强通常指的是对图像的对比度、亮度和清晰度等方面进行调整,以改善图像的质量和可读性。
数字图像处理中的滤波是一种常用的图像增强方法。
滤波器是一个能够对图像进行局部操作的矩阵,它能够提取或抑制特定的图像特征。
% 对图像进行平滑滤波K = imgaussfilt(J, 1);% 显示滤波后的图像imshow(K);4.数字图像处理在实际应用中的例子数字图像处理在很多实际应用中被广泛应用。
这些应用包括医疗成像、计算机视觉、人脸识别、安防监控等。
下面是数字图像处理在人脸识别应用中的一个简单例子。
% 导入图像文件I = imread('face.jpg');% 进行人脸检测faceDetector = vision.CascadeObjectDetector;bbox = step(faceDetector, I);% 在图像上标记人脸位置IFaces = insertObjectAnnotation(I, 'rectangle', bbox, 'Face');imshow(IFaces);实验结论通过本次实验,我已经能够理解数字图像处理的基本概念与原理,掌握数字图像处理的基本方法,熟练应用数字图像处理软件进行图像处理。
数字图像处理实验报告

数字图像处理实验报告数字图像处理实验报告1一. 实验内容:主要是图像的几何变换的编程实现,具体包括图像的读取、改写,图像平移,图像的镜像,图像的转置,比例缩放,旋转变换等.具体要求如下:1.编程实现图像平移,要求平移后的图像大小不变;2.编程实现图像的镜像;3.编程实现图像的转置;4.编程实现图像的比例缩放,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的缩放效果;5.编程实现以任意角度对图像进行旋转变换,要求分别用双线性插值和最近邻插值两种方法来实现,并比较两种方法的旋转效果.二.实验目的和意义:本实验的目的是使学生熟悉并掌握图像处理编程环境,掌握图像平移、镜像、转置和旋转等几何变换的方法,并能通过程序设计实现图像文件的读、写操作,及图像平移、镜像、转置和旋转等几何变换的程序实现.三.实验原理与主要框架:3.1 实验所用编程环境:Visual C++(简称VC)是微软公司提供的基于C/C++的应用程序集成开发工具.VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Web应用程序.VC除了提供高效的C/C++编译器外,还提供了大量的可重用类和组件,包括著名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具.VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具.在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用.3.2 实验处理的对象:256色的BMP(BIT MAP )格式图像BMP(BIT MAP )位图的文件结构:具体组成图: BITMAPFILEHEADER位图文件头(只用于BMP文件) bfType=”BM” bfSize bfReserved1bfReserved2bfOffBitsbiSizebiWidthbiHeightbiPlanesbiBitCountbiCompressionbiSizeImagebiXPelsPerMeterbiYPelsPerMeterbiClrUsedbiClrImportant单色DIB有2个表项16色DIB有16个表项或更少256色DIB有256个表项或更少真彩色DIB没有调色板每个表项长度为4字节(32位)像素按照每行每列的顺序排列每一行的字节数必须是4的整数倍BITMAPINFOHEADER 位图信息头 Palette 调色板 DIB Pixels DIB图像数据1. BMP文件组成BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成.2. BMP文件头BMP文件头数据结构含有BMP文件的类型(必须为BMP)、文件大小(以字节为单位)、位图文件保留字(必须为0)和位图起始位置(以相对于位图文件头的偏移量表示)等信息.3. 位图信息头BMP位图信息头数据用于说明位图的尺寸(宽度,高度等都是以像素为单位,大小以字节为单位, 水平和垂直分辨率以每米像素数为单位) ,目标设备的级别,每个像素所需的位数, 位图压缩类型(必须是 0)等信息.4. 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色.具体包含蓝色、红色、绿色的亮度(值范围为0-255)位图信息头和颜色表组成位图信息5. 位图数据位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,扫描行之间是从下到上.Windows规定一个扫描行所占的字节数必须是4的倍数(即以long为单位),不足的以0填充.3.3 BMP(BIT MAP )位图的显示:①一般显示方法:1. 申请内存空间用于存放位图文件2. 位图文件读入所申请内存空间中3. 在函数中用创建显示用位图, 用函数创建兼容DC,用函数选择显示删除位图但以上方法的缺点是: 1)显示速度慢; 2) 内存占用大; 3) 位图在缩小显示时图形失真大,(可通过安装字体平滑软件来解决); 4) 在低颜色位数的设备上(如256显示模式)显示高颜色位数的图形(如真彩色)图形失真严重.②BMP位图缩放显示 :用视频函数来显示位图,内存占用少,速度快,而且还可以对图形进行淡化(Dithering )处理.淡化处理是一种图形算法,可以用来在一个支持比图像所用颜色要少的设备上显示彩色图像.BMP位图显示方法如下:1. 打开视频函数,一般放在在构造函数中2. 申请内存空间用于存放位图文件3. 位图文件读入所申请内存空间中4. 在函数中显示位图5. 关闭视频函数 ,一般放在在析构函数中以上方法的优点是: 1)显示速度快; 2) 内存占用少; 3) 缩放显示时图形失真小,4) 在低颜色位数的设备上显示高颜色位数的图形图形时失真小; 5) 通过直接处理位图数据,可以制作简单动画.3.4 程序中用到的访问函数Windows支持一些重要的DIB访问函数,但是这些函数都还没有被封装到MFC中,这些函数主要有:1. SetDIBitsToDevice函数:该函数可以直接在显示器或打印机上显示DIB. 在显示时不进行缩放处理.2. StretchDIBits函数:该函数可以缩放显示DIB于显示器和打印机上.3. GetDIBits函数:还函数利用申请到的内存,由GDI位图来构造DIB.通过该函数,可以对DIB的格式进行控制,可以指定每个像素颜色的位数,而且可以指定是否进行压缩.4. CreateDIBitmap函数:利用该函数可以从DIB出发来创建GDI 位图.5. CreateDIBSection函数:该函数能创建一种特殊的DIB,称为DIB项,然后返回一个GDI位图句柄.6. LoadImage函数:该函数可以直接从磁盘文件中读入一个位图,并返回一个DIB句柄.7. DrawDibDraw函数:Windows提供了窗口视频(VFW)组件,Visual C++支持该组件.VFW中的DrawDibDraw函数是一个可以替代StretchDIBits 的函数.它的最主要的优点是可以使用抖动颜色,并且提高显示DIB的速度,缺点是必须将VFW代码连接到进程中.3.5 图像的几何变换图像的几何变换,通常包括图像的平移、图像的镜像变换、图像的转置、图像的缩放和图像的旋转等.数字图像处理实验报告2一、实验的目的和意义实验目的:本实验内容旨在让学生通过用VC等高级语言编写数字图像处理的一些基本算法程序,来巩固和掌握图像处理技术的基本技能,提高实际动手能力,并通过实际编程了解图像处理软件的实现的基本原理。
《数字图像处理》实验报告

《数字图像处理》实验报告数字图像处理是一门将图像进行数字化处理的学科,它通过计算机算法和技术手段对图像进行分析、增强、压缩和重建等操作。
在本次实验中,我们学习了数字图像处理的基本概念和常用算法,并通过实验来探索其应用和效果。
首先,我们进行了图像的读取和显示实验。
通过使用Python中的OpenCV库,我们能够轻松地读取图像文件,并将其显示在屏幕上。
这为我们后续的实验奠定了基础。
同时,我们还学习了图像的像素表示方法,了解了图像由像素点组成的原理。
这使我们能够更好地理解后续实验中的算法和操作。
接下来,我们进行了图像的灰度化实验。
灰度化是将彩色图像转换为灰度图像的过程。
在实验中,我们使用了不同的算法来实现灰度化操作,包括平均值法、最大值法和加权平均法等。
通过比较不同算法得到的灰度图像,我们发现不同算法对图像的处理效果有所差异,这使我们深入理解了灰度化的原理和应用。
随后,我们进行了图像的直方图均衡化实验。
直方图均衡化是一种用于增强图像对比度的方法。
在实验中,我们使用了直方图均衡化算法来对图像进行处理,并观察了处理前后的效果变化。
通过实验,我们发现直方图均衡化能够显著提高图像的对比度,使图像更加清晰和鲜明。
在进一步探索图像处理技术的过程中,我们进行了图像的滤波实验。
滤波是一种常用的图像处理操作,它通过对图像进行卷积操作来实现。
在实验中,我们学习了不同类型的滤波器,包括均值滤波器、高斯滤波器和中值滤波器等。
通过比较不同滤波器对图像的处理效果,我们发现每种滤波器都有其适用的场景和效果。
此外,我们还进行了图像的边缘检测实验。
边缘检测是一种用于提取图像边缘信息的方法。
在实验中,我们学习了不同的边缘检测算法,包括Sobel算子、Canny算子和Laplacian算子等。
通过比较不同算法对图像的处理效果,我们发现每种算法都有其独特的特点和应用。
最后,我们进行了图像的压缩实验。
图像压缩是一种将图像数据进行压缩以减小文件大小的方法。
东南大学数字图像处理实验报告教材

数字图像处理实验报告学号:04211734姓名:付永钦日期:2014/6/71.图像直方图统计①原理:灰度直方图是将数字图像的所有像素,按照灰度值的大小,统计其所出现的频度。
通常,灰度直方图的横坐标表示灰度值,纵坐标为半个像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。
②算法:clear allPS=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:255GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率endfigure(1);subplot(1,2,2);bar(0:255,GP,'g') %绘制直方图axis([0 255 min(GP) max(GP)]);title('原图像直方图')xlabel('灰度值')ylabel('出现概率')③处理结果:原图像灰度图1002000.0050.010.0150.020.0250.030.0350.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:255GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率endfigure(1);subplot(2,2,2);bar(0:255,GP,'g') %绘制直方图axis([0 255 min(GP) max(GP)]);title('原图像直方图')xlabel('灰度值')ylabel('出现概率')%三,直方图均衡化S1=zeros(1,256);for i=1:256for j=1:iS1(i)=GP(j)+S1(i); %计算SkendendS2=round((S1*256)+0.5); %将Sk归到相近级的灰度for i=1:256GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率endfigure(1);subplot(2,2,4);bar(0:255,GPeq,'b') %显示均衡化后的直方图axis([0 255 min(GPeq) max(GPeq)]);title('均衡化后的直方图')xlabel('灰度值')ylabel('出现概率')%四,图像均衡化PA=PS;for i=0:255PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素endfigure(1);subplot(2,2,3);imshow(PA) %显示均衡化后的图像title('均衡化后图像')imwrite(PA,'PicEqual.bmp');③处理结果:原图像灰度图10020000.010.020.030.04原图像直方图灰度值出现概率010020000.010.020.030.04均衡化后的直方图灰度值出现概率均衡化后图像④结果分析:通过原始图像和均衡化后的图像对比,均衡化后图像由彩色图像变为了灰度图像。
数字图像处理实验报告(五个实验全)

数字图像处理实验报告(五个实验全)实验⼀ Matlab图像⼯具的使⽤1、读图I=imread('lena.jpg');imshow(I);2、读⼊⼀幅RGB图像,变换为灰度图像和⼆值图像,并在同⼀个窗⼝内分成三个⼦窗⼝来分别显⽰RGB图像和灰度图像。
a=imread('lena.jpg')i = rgb2gray(a)I = im2bw(a,0.5)subplot(3,1,1);imshow(a);subplot(3,1,2);imshow(i);subplot(3,1,3);imshow(I);原图像灰度图像⼆值图像实验⼆图像变换1、对⼀幅图像进⾏平移,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与平移后傅⾥叶频谱的对应关系。
s=imread('beauty.jpg');i=rgb2gray(s)i=double(i)j=fft2(i);k=fftshift(j); 原图像原图的傅⾥叶频谱l=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);l=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);subplot(2,2,2);imshow(uint8(b));subplot(2,2,3);imshow(A);subplot(2,2,4);imshow(B);2、对⼀幅图像进⾏旋转,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与旋转后傅⾥叶频谱的对应关系。
数字图像处理实验报告01245

数字图像处理实验报告01245数字图像处理实验报告一、实验名称图像读取和图像直方图统计二、实验目的 1. 强化巩固《数字图像处理》课程中学习的知识,将理论用于实践。
2. 学会利用 C++程序语言实现数字图像处理中的“图像读取”和“图像直方图统计”功能,加深对这门课程的理解。
3. 为以后更进一步学习数字图像处理的知识打下基础。
三、实验工具安装有 VC 6.0 软件的电脑一台四、实验步骤(分实验一和实验二)(一) 实验一:图像的读取 1. 按照实验指导书中的构建DIB 函数库的方法,将此函数库的代码写进文本文档中,并另存为相应的“.cpp”文件和“.h”文件。
2. 新建以“Miaoqi”为名字的工程,设置好相应选项。
3. 接下来,在该工程中各个文件中添加相应代码。
点击“FileView”即可打开查看。
1) 在“Miaoqi.cpp”中添加 // 启动时不自动打开一个空文档cmdInfo.m_nShellCommand =CCommandLineInfo::FileNothing; 2) 在“ MiaoqiDoc.cpp ” 中添加重新加载菜单,对应函数ON_COMMAND(ID_FILE_REOPEN, OnFileReopen)的功能:-a) 点击“ResourceView”—“Miaoqiresources”—“Menu”—“IDR_MIAOQI_TYPE”,则跳出一个视图的框架,点击“文件”,将按钮拖拽到合适的位置,再右击,点击属性,设置重新加载相应的 ID 和 Caption。
b) 点击查看—建立类向导—“ID_File_Reopen”—“Command”—设置函数名“OnFileReopen”,点击确定。
3) 在“Miaoqi Doc.cpp 中”添加代码,使在构造函数中初始化某些变量,在析构函数中撤销内存。
4) 点击“查看”—“建立类向导”,添加“BOOL MiaoqiDoc::CanCloseFrame(CFrameWnd*pFrame) ” 和“ void MiaoqiDoc::DeleteContents” 5) 按照实验指导书中的相应代码,完成“ MiaoqiDoc:: OnOpenDocument(LPCTSTR lpszPathName)”函数代码的添加,使之实现打开一个文件(即一副图像)的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验报告学号:04211734姓名:付永钦日期:2014/6/71.图像直方图统计①原理:灰度直方图是将数字图像的所有像素,按照灰度值的大小,统计其所出现的频度。
通常,灰度直方图的横坐标表示灰度值,纵坐标为半个像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。
②算法:clear allPS=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:255GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率endfigure(1);subplot(1,2,2);bar(0:255,GP,'g') %绘制直方图axis([0 255 min(GP) max(GP)]);title('原图像直方图')xlabel('灰度值')ylabel('出现概率')③处理结果:原图像灰度图1002000.0050.010.0150.020.0250.030.0350.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:255GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率endfigure(1);subplot(2,2,2);bar(0:255,GP,'g') %绘制直方图axis([0 255 min(GP) max(GP)]);title('原图像直方图')xlabel('灰度值')ylabel('出现概率')%三,直方图均衡化S1=zeros(1,256);for i=1:256for j=1:iS1(i)=GP(j)+S1(i); %计算SkendendS2=round((S1*256)+0.5); %将Sk归到相近级的灰度for i=1:256GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率endfigure(1);subplot(2,2,4);bar(0:255,GPeq,'b') %显示均衡化后的直方图axis([0 255 min(GPeq) max(GPeq)]);title('均衡化后的直方图')xlabel('灰度值')ylabel('出现概率')%四,图像均衡化PA=PS;for i=0:255PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素endfigure(1);subplot(2,2,3);imshow(PA) %显示均衡化后的图像title('均衡化后图像')imwrite(PA,'PicEqual.bmp');③处理结果:原图像灰度图10020000.010.020.030.04原图像直方图灰度值出现概率010020000.010.020.030.04均衡化后的直方图灰度值出现概率均衡化后图像④结果分析:通过原始图像和均衡化后的图像对比,均衡化后图像由彩色图像变为了灰度图像。
原始图像直方图与均衡化后直方图对比,均衡化后的直方图灰度值更加平均,在整幅图像中不在集中。
3. 图象平滑消噪处理①原理:图像的平滑方法是一种实用的图像处理技术,能减弱或消除图像中的高频率分量,但不影响低频率分量。
因为高频率分量主要对应图像中的区域边缘等灰度值具有较大较快变化的部分,平滑滤波将这些分量滤去可减少局部灰度起伏,使图像变得比较平滑。
实际应用中,平滑滤波还可用于消除噪声,或者在提取较大目标前去除过小的细节或将目标内的小间断连接起来。
它的主要目的是消除图像采集过程中的图像噪声,在空间域中主要利用邻域平均法、中值滤波法和选择式掩模平滑法等来减少噪声;在频率域内,由于噪声主要存在于频谱的高频段,因此可以利用各种形式的低通滤波器来减少噪声。
②算法:clear all;x=imread('smooth_Gauss.jpg'); n=5;a(1:n,1:n)=1; %a 即n×n 模板,元素全是1[height, width]=size(x); %hight>n,width>nx1=double(x);x2=x1;for i=1:height-n+1for j=1:width-n+1c=x1(i:i+(n-1),j:j+(n-1)).*a;%取出x1中从(i,j)开始的n行n列元素与模板相乘s=sum(sum(c)); %求c矩阵中各元素之和x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n);%将与模板运算后的各元素的均值赋给模板中心位置的元素endend%未被赋值的元素取原值d=uint8(x2);figure(1);subplot(1,2,1);imshow(x);title('原图像');figure(1);subplot(1,2,2);imshow(d);title('5*5模板均值滤波后的图像');③处理结果:原图像5*5模板均值滤波后的图像④结果分析:由图像可知,原图像的噪声得到了较好的消除。
实验结果比较理想。
4.彩色图象锐化处理①原理:图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要利用图像锐化技术,使图像的边缘变得清晰。
②算法:clear all;rgb = imread('acute.bmp');figure(1);subplot(2,2,1);imshow(rgb);title('原图');lapmatrix = [1 1 1; 1 -8 1; 1 1 1];I = imfilter(rgb, lapmatrix, 'replicate');figure(1);subplot(2,2,2);imshow(I);title('图像边缘锐化');I_sharp = double(rgb) - double(I);figure(1);subplot(2,2,3);imshow(uint8(I_sharp));title('锐化后的图像');③处理结果:原图图像边缘锐化锐化后的图像④结果分析:由处理后的图像与原图像对比,可以看出处理后的图像细节特征得到了增强,得到了较好的锐化效果。
5.中值滤波处理①原理:统计滤波器是一种非线性的空间滤波器,它的响应基于图像滤波器包围的图像区域中像素的排列,然后用统计排序结果决定的值代替中心像素的值。
统计滤波器中最常见的例子是中值滤波器,是将邻域内像素灰度的中值代替该像素的值。
对处理椒盐噪声非常有效。
②算法:clear all;x=imread('r.bmp');x=rgb2gray(x);n=5;[height, width]=size(x); %输入图像是p×q的,且p>n,q>nx1=double(x);x2=x1;for i=1:height-n+1for j=1:width-n+1c=x1(i:i+(n-1),j:j+(n-1));%取出x1中从(i,j)开始的n行n列元素,即模板(n×n的) e=c(1,:); %是c矩阵的第一行for u=2:ne=[e,c(u,:)]; %将c矩阵变为一个行矩阵endmm=median(e); %mm是中值x2(i+(n-1)/2,j+(n-1)/2)=mm;%将模板各元素的中值赋给模板中心位置的元素endend%未被赋值的元素取原值d=uint8(x2);figure(1);subplot(1,2,1);imshow(x);title('原图像');figure(1);subplot(1,2,2);imshow(d);title('5*5模板中值滤波后的图像');③处理结果:④结果分析:由处理后的图像可知,原图像中小猫脸上的圆圈得到了较好的消除。
6.伪彩色增强处理①原理:可以有多种方式实现从灰度空间到彩色空间的变换。
最简单的一种是把灰度图像的灰度级从0~255 分成255 个区间,给每个区间指定一种彩色。
这种方法较简单,但变换出的彩色有限。
从灰度空间到彩色空间的一种有代表性的变换方式是将源图像f(x,y)的灰度经红、绿、蓝3 种不同变换,变成3 基色的分量R(x,y)、G(x、y)、B(x、y),生成相应的彩色。
彩色的含量由变换函数而定。
还有一种伪彩色增强也可通过频率域处理来实现。
输入图像的傅立叶变换通过三个不同的滤波器被分成不同的频率分量,对各频率分量分别进行傅立叶逆变换,其结果进一步处理(如直方图均衡化或规定化),然后进行彩色合成就能得到增强后的彩色图像。
②算法:clear all;A=imread('pseudo.bmp');I=rgb2gray(A);I=double(I);[m,n]=size(I);L=256;R=zeros([m,n]);G=zeros([m,n]);B=zeros([m,n]);s1=find(I<=L/4); %0-L/4R(s1)=0;G(s1)=4*I(s1);B(s1)=L;s2=find(I<=L/2&I>L/4) ; %L/4-L/2R(s2)=0;G(s2)=L;B(s2)=-4*I(s2)+2*L;s3=find(L/2<I&I<=3*L/4); %L/2-3L/4R(s3)=4*I(s3)-2*L;G(s3)=L;B(s3)=0;s4=find(3*L/4<I&I<=L); %3L/4-LR(s4)=L;G(s4)=-4*I(s4)+4*L;B(s4)=0;out(:,:,1)=R;out(:,:,2)=G;out(:,:,3)=B;out=out/256;figure(1);subplot(1,2,1);imshow(A);title('原图像');figure(1);subplot(1,2,2);imshow(out);title('伪彩色增强后图像');③处理结果:原图像伪彩色增强后图像④结果分析:由处理后的图像可知,经过伪彩色增强后的图像给人的视觉刺激更为强烈。