重庆大学数字图像处理实验以及完整源代码
- 格式:pdf
- 大小:587.89 KB
- 文档页数:12
数字图像处理实验报告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编程语言和相关库实现了图像的读取、显示、灰度化、二值化、平滑处理、边缘检测和直方图均衡化等操作。
数字图像处理实验一 MATLAB数字图像处理初步一、显示图像1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;实验结果如下图:源代码:>>I=imread('lily.tif')>> whos I>> imshow(I)二、压缩图像4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。
7.用imread()读入图像Sunset.jpg和Winter.jpg;8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小;9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。
其中9的实验结果如下图:源代码:4~6(接上面两个) >>I=imread('lily.tif')>> imfinfo 'lily.tif';>> imwrite(I,'lily.jpg','quality',20);>> imwrite(I,'lily.bmp');7~9 >>I=imread('Sunset.jpg');>>J=imread('Winter.jpg')>>imfinfo 'Sunset.jpg'>> imfinfo 'Winter.jpg'>>figure(1),imshow('Sunset.jpg')>>figure(2),imshow('Winter.jpg')三、二值化图像10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。
实验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、给出实验原理过程及实现代码:I=imread('coins.png');%读取图像subplot(1,2,1),imshow(I) %输出图像title('原始图像') %在原始图像中加标题subplot(1,2,2),imhist(I) %输出原图直方图title('原始图像直方图') %在原图直方图上加标题2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。
实验2 均值滤波一.实验目的1.熟悉matlab图像处理工具箱及均值滤波函数的使用;2.理解和掌握3*3均值滤波的方法和应用;二.实验设备:1.PC机一台;2.软件matlab三.程序设计在matlab环境中,程序首先读取图像,然后调用图像增强(均值滤波)函数,设置相关参数,再输出处理后的图像。
竭诚为您提供优质文档/双击可除数字图像处理实验报告篇一:数字图像处理实验报告实验一数字图像的获取一、实验目的1、了解图像的实际获取过程。
2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。
3、熟练掌握图像读、写、显示、类型转换等matlab函数的用法。
二、实验内容1、读取一幅彩色图像,将该彩色图像转化为灰度图像,再将灰度图像转化为索引图像并显示所有图像。
2、编程实现空间分辨率变化的效果。
三、实验原理1、图像读、写、显示I=imread(‘image.jpg’)Imview(I)Imshow(I)Imwrite(I,’wodeimage.jpg’)2、图像类型转换I=mat2gray(A,[amin,amax]);按指定的取值区间[amin,amax]将数据矩阵A转化为灰度图像I,amin对应灰度0,amax对应1,也可以不指定该区间。
[x,map]=gray2ind(I,n);按指定的灰度级n将灰度图像转化为索引图像,n默认为64I=ind2gray(x,map);索引图像转化为灰度图像I=grb2gray(Rgb);真彩色图像转化为灰度图像[x,map]=rgb2ind(Rgb);真彩色图像转化为索引图像Rgb=ind2rgb(x,map);索引图像转化为真彩色图像bw=im2bw(I,level);将灰度图像转化为二值图像,level取值在[0,1]之间bw=im2bw(x,map,level);将索引图像转化为二值图像,level取值在[0,1]之间bw=im2bw(Rgb,level);将真彩色图像转化为二值图像,level取值在[0,1]之间四、实验代码及结果1、in=imread(peppers.png);i=rgb2gray(in);[x,map]=gray2ind(i,128); subplot(131),imshow(in)subplot(132),imshow(i)subplot(133),imshow(x),colormap(map) 、%空间分辨率变化的效果clc,closeall,cleari=imread(cameraman.tif);i=imresize(i,[256,256]);i1=i(1:2:end,1:2:end);[m1,n1]=size(i)i2=i1(1:2:end,1:2:end);[m2,n2]=size(i2)i3=i2(1:2:end,1:2:end);[m3,n3]=size(i3)subplot(221),imshow(i),xlabel(256x256) subplot(222),imshow(i1),xlabel(128x128) subplot(223),imshow(i2),xlabel(64x64) subplot(224),imshow(i3),xlabel(32x32) 256x25664x64128x12832x322实验二图像的几何变换一、实验目的掌握图像的基本几何变换的方法1、图像的平移2、图像的旋转二、实验内容练习用matalb命令实现图像的平移、旋转操作1、.编写实现图像平移的函数2、用imread命令从你的硬盘读取一幅256×256灰度图;3、调用平移函数,将256×256灰度图平移100行200列,在同一个窗口中显示平移前和平移后的图像。
数字图像处理—实验一源程序:a=imread('rice.png');figure,imshow(a),title('原图');axis on;a=double(a)/256;figure,imhist(a),title('原直方图');axis on;r=[0:0.001:1];s1=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*( 1+0.3*(r-1));s2=[r<=0.5].*(r.^5)*15.9744+[r>0.5].*((r-0.5).^0.2+0.12);a1=[a<0.35].*a*0.3+[a<=0.65].*[a>=0.35].*(0.105+2.6333*(a-0.35))+[a>0.65].* (1+0.3*(a-1));a2=[a<=0.5].*(a.^5)*15.9744+[a>0.5].*((a-0.5).^0.2+0.12);figure,imshow(a1),title('改后一');axis on;figure,imhist(a1),title('改后直方图一');axis on;figure,plot(r,s1),title('变换函数一');axis on;figure,imshow(a2),title('改后二');axis on;figure,imhist(a2),title('改后直方图二');axis on;figure,plot(r,s2),title('变换函数二');axis on;imwrite(a1,'改后rice 一.jpg');imwrite(a2,'改后rice 二.jpg');b=imread('kids.tif');figure,imshow(b),title('原图');axis on;b=double(b)/256;figure,imhist(b);title('原直方图');axis on;s1=r.^0.6;s2=r.^0.4;s3=r.^0.3;b1=imadjust(b,[],[],0.6);b2=imadjust(b,[],[],0.4);b3=imadjust(b,[],[],0.3);figure,imshow(b1),title('改后一');axis on;figure,imhist(b1),title('改后直方图一');axis on;figure,plot(r,s1),title('变换函数一');axis on;figure,imshow(b2),title('改后二');axis on;figure,imhist(b2),title('改后直方图二');axis on;figure,plot(r,s2),title('变换函数二');axis on;figure,imshow(b3),title('改后三');axis on;figure,imhist(b3),title('改后直方图三');axis on;figure,plot(r,s3),title('变换函数三');axis on;imwrite(b1,'改后kids 一.jpg');imwrite(b2,'改后kids 二.jpg');imwrite(b3,'改后kids 三.jpg');c=imread('circuit.tif');figure,imshow(c),title('原图');axis on;c=double(c)/256;figure,imhist(c),title('原直方图');axis on;s=1-r;c=1-c;figure,imshow(c),title('变换后');axis on;figure,imhist(c),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(c,'改后circuit.jpg');d=imread('rice.png');figure,imshow(d),title('原图');axis on;d=double(d)/256;figure,imhist(d),title('原直方图');axis on;r=[0:0.001:1];s=[r<=0.4].*[r>=0.2]*0.6;d=[d<=0.4].*[d>=0.2]*0.6+[d>0.4].*d+[d<0.2].*d;figure,imshow(d),title('变换后');axis on;figure,imhist(d),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(d,'第二次改后rice.jpg');e=imread('Picture.jpg');e=e(:,:,1);e=im2double(e);figure,imshow(e),title('原图');axis on;figure,imhist(e),title('原直方图');axis on;r=[0:0.001:1];s=[r<0.3].*r*1.1+[r>0.65].*r*0.8+[r>=0.3].*[r<=0.65].*(0.11+r*1.5); e=[e<0.3].*e*1.1+[e>0.65].*e*0.8+[e>=0.3].*[e<=0.65].*(0.11+e*1.5); figure,imshow(e),title('变换后');axis on;figure,imhist(e),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(e,'改后Picture.jpg');处理前后图像:结论:不同的灰度变换对最终图像的影响效果是不同的。
数字图像处理实验程序部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑数字图像处理实验1——图像的显示>> I1=imread('D:/bacteria.BMP'>。
%读取图像>> size(I1>%给出一副图像的行数和列数>> whos I1 %显示图像的附加信息>> figure。
>> subplot(1,2,1>,imshow(I1>。
%显示图像>>I2=imread('D:/Miss.BMP'>。
>>whosI2>> subplot(1,2,2>,imshow(I2>。
%显示图像数字图像处理实验2——图像的增强I = imread('D:\Miss.bmp'>。
figure,subplot(2,2,1>,imshow(I>。
%直方图均衡化前的图像效果subplot(2,2,2>,imhist(I>。
%直方图%I2=rgb2gray(I>。
%如果读取的是彩色图像,需要灰度转换J = histeq(I>。
%调用函数完成直方图均衡化subplot(2,2,3>,imshow(J> %直方图均衡化后的图像效果subplot(2,2,4>,imhist(J> %均衡化后的直方图数字图像处理实验3——图像的滤波%图像受高斯白噪声和椒盐噪声的影响I = imread('D:/bacteria.BMP'>。
subplot(3,1,1>。
imshow(I> 。
J1=imnoise(I,'gaussian',0,0.02>。
%叠加均值为0,方差为0.02的高斯噪声b5E2RGbCAPsubplot(3,1,2>。
试验一一, 实验目的上机实验是为训练学生的实际程序设计能力安排的、包含在教学课时内的教学内容。
实验目的是:1 , 进一步深入理解相关部分的基本概念和授课内容。
2, 进一步提高实际动手进行程序设计的能力。
二,实验要求(1), 熟悉Matlab软件、编程以及图像处理工具箱。
掌握Matlab的操作界面和基本操作流程掌握m文件的使用掌握Matlab关于图像的读入、输出的处理函数,比如:imread、imshow、figure、Subplot、imwrite、colormap(2), 利用图像处理工具箱进行空域图像增强实验利用Matlab的图像处理工具箱中提供的函数进行“点运算”利用Matlab的图像处理工具箱中提供的函数进行“算术运算”灰度切割、分段线性变换、位图切割:需要进行Matlab编程图像平均减少噪声:需要进行Matlab编程要求至少实现5个(包括5个)以上的,在课程中讲过的图像空域增强方法。
三,程序设计基本思想Matlab关于图像的读入,输出的处理函数以及matlab图像处理工具箱里的函数可在matlab中能直接调用,多做几个试验就能熟练掌握运用这几个函数;后面的需要用matlab编程来实现数字图像处理功能的试验需自己编写源程序,做完以上两个部分,这个试验就完成了。
四,原理概述a)学会调用matlab图像处理工具箱的函数,这个可以在matlab中直接试验。
b)第二部分,要求用matlab编程工具来实现图像的灰度切割,位图切割等功能。
(1),灰度切割的原理:灰度切割实际上是分段函数线性变换的一种处理方法,他所要实现的主要功能是变幻某一段灰度值的灰度值(将之变亮或变暗或根据要求做其他方面的变幻),编写源程序时只需提出带改变部分的灰度值,对其进行符合要求的变化即可。
(2),位图切割的原理:位图切割同样是分段线性变换的一种,不同的是文图切割中把一幅图像“分个八层”,每层都含有原图的部分信息,编写源代码时,可以去提出或除某一位图,显示出代表的信息。
大学数字图像处理实验报告设计题目:数字图像处理专业名称:软件工程班级: 1 学号: 1 姓名: MARK 指导教师:2016年5月16日目录实验一数字图像的采集和Photoshop软件的操作 (4)1.1实验目的 (4)1.2实验任务及要求 (4)1.3实验内容、步骤和结果 (4)1.4 结果分析 (7)实验二图像的傅里叶变换 (8)2.1实验目的 (8)2.2实验任务及要求 (8)2.3实验内容、步骤和结果 (8)2.4 结果分析 (11)实验三图像的灰度变换和直方图变换 (12)3.1实验目的 (12)3.2实验任务及要求 (12)3.3实验内容、步骤和结果 (12)3.4 结果分析 (16)实验四图像的平滑处理 (17)4.1实验目的 (17)4.2实验任务及要求 (17)4.3实验内容、步骤和结果 (17)4.4 结果分析 (20)实验五 (21)5.1实验目的 (21)5.2实验任务及要求 (21)5.3实验内容、步骤和结果 (21)5.4 结果分析 (24)实验六 (26)6.1实验目的 (26)6.2实验任务及要求 (26)6.3实验内容、步骤和结果 (26)6.4 结果分析 (28)实验一数字图像的采集和Photoshop软件的操作1.1实验目的1、熟悉并掌握MATLAB,PHOTOSHOP等工具的使用;2、实现图像的读取、显示、代数运算和简单的变换。
1.2实验任务及要求1、根据实验内容在MATLAB中编写相应地代码,使结果符合题目要求;2、在PHOTOSHOP中实现与MATLAB中相同对图像的处理,进行对比;3、完成实验报告。
1.3实验内容、步骤和结果1、实验内容:a)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口上分成三个子窗口来分别显示RGB图像、灰度图像和二值图像,注上文字标题;b)对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题;c)对一幅图像进行灰度变化,实现图像变亮,变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题;d)学会常用数字图像处理软件Photoshop的功能操作练习。
数字图像处理实验报告(五个实验全)实验⼀ 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、对⼀幅图像进⾏旋转,显⽰原始图像与处理后图像,分别对其进⾏傅⾥叶变换,显⽰变换后结果,分析原图的傅⾥叶谱与旋转后傅⾥叶频谱的对应关系。