搜档网
当前位置:搜档网 › 数字图像处理实验作业及代码

数字图像处理实验作业及代码

数字图像处理实验作业及代码
数字图像处理实验作业及代码

数字图像处理—实验一

源程序:

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');

处理前后图像:

结论:

不同的灰度变换对最终图像的影响效果是不同的。通过matlab灰度变化可以增加图像亮度,提高对比度,使视觉效果更好。

数字图像处理—实验二

源代码:

I1=imread('mountain.jpg');

[J1,T1]=histeq(I1,256);

figure,subplot(2,3,1),imshow(I1),title('原图');axis on;

subplot(2,3,2),imhist(I1),title('原图直方图');axis on;

subplot(2,3,4),imshow(J1),title('均衡化后图像');axis on;

subplot(2,3,5),imhist(J1),title('均衡化后直方图');axis on;

subplot(2,3,6),plot(T1),title('变换函数');axis on;

I2=uint8(I1);

r=0:1:255;

n=([r<=5].*r*1400+[r>5].*[r<=20].*(7000-r*310)+[r>20].*[r<=180].*(900-r*5)...

+[r>180].*[r<=225].*(r*8-1440)+[r>225].*[r<=255].*(3060-r.*12));

[J2,T2]=histeq(I2,n);

figure,subplot(2,3,1),imshow(I2),title('原图');axis on;

subplot(2,3,2),imhist(I2),title('原图直方图');axis on;

subplot(2,3,4),imshow(J2),title('规定化后图像');axis on;

subplot(2,3,5),imhist(J2),title('规定化后直方图');axis on;

subplot(2,3,6),plot(T2),title('变换函数');axis on;

I3=im2double(I1);

[m n]=size(I3);

r1=zeros(1,256);p=r1;s1=r1;s2=r1;

a=0;

for k=1:256

for i=1:m

for j=1:n

if(I3(i,j)==((k-1)/255));

r1(k)=r1(k)+1;

end

end

end

p(k)=r1(k)/65536;

s1(k)=a+p(k);

a=s1(k);

s2(k)=round(s1(k)/(1/255))/255;

end

[m n]=size(I3);

t=0;

for k=1:256

t=t+1;

if( k==256||s2(k)~=s2(k+1))

for i=1:m

for j=1:n

if(I3(i,j)>=(k-t)/255&&I3(i,j)<=(k-1)/255)

I4(i,j)=s2(k);

end

end

end

t=0;

end

end

I3=mat2gray(I3);

I4=mat2gray(I4);

figure,subplot(2,3,1),imshow(I3),title('原图');axis on;

subplot(2,3,2),imhist(I3),title('原图直方图');axis on;

subplot(2,3,4),imshow(I4);title(' 自编函数均衡化');axis on; subplot(2,3,5);imhist(I4);title(' 自编函数均衡化后直方图');axis on; subplot(2,3,6),plot(s1),title('变换函数');axis on;

处理前后图像:

结论:

直方图均衡化通过使用累积函数对灰度值进行“调整”以实现对比度的增强,通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度。

数字图像处理—实验三

源代码:

close all;

I=imread('test3_1.jpg');

I=im2double(I);

tic

J=nlfilter(I,[5 5],@mean2);

toc

tic

T=nlfilter(I,[5 5],@std2);

toc

figure(1),subplot(2,3,1),imshow(I),title('原始图像');axis on;

subplot(2,3,2),imshow(J),title('邻域均值图像');axis on;

subplot(2,3,3),imshow(T),title('邻域均值标准差图像');axis on;

imwrite(J,'nlfilterl 滤波后.jpg');

I=imnoise(I,'gaussian',0,0.02);

J=nlfilter(I,[5 5],@mean2);

T=nlfilter(I,[5 5],@std2);

subplot(2,3,4),imshow(I),title('加噪图像');axis on;

subplot(2,3,5),imshow(J),title('加噪邻域均值图像');axis on; subplot(2,3,6),imshow(T),title('加噪邻域均值标准差图像');axis on; imwrite(J,'加噪nlfilterl 滤波后.jpg');

I2=imread('test3_2.jpg');

J2=im2double(I2);

tic

ave=fspecial('average',5);

J2=filter2(ave,J2);

toc

J3=medfilt2(J2,[5 5]);

tic

J4=nlfilter(J2,[5 5],@mean2);

toc

figure(2),subplot(2,2,1),imshow(I2),title('原始图像');axis on; subplot(2,2,2),imshow(J2),title('filter2 处理后图像');axis on; subplot(2,2,3),imshow(J3),title('medfilt2 处理后图像');axis on; subplot(2,2,4),imshow(J4),title('nlfilter 处理后图像');axis on; imwrite(J2,'filter2 滤波后.jpg');

imwrite(J3,'medfilt2 滤波后.jpg');

imwrite(J4,'nlfilter 滤波后(2).jpg');

F=midf(I2,3,3);

figure(3),subplot(1,2,1),imshow(I2),title('滤波前');axis on;

subplot(1,2,2),imshow(F),title('中值滤波后');axis on;

imwrite(F,' 自编中值滤波后.jpg');

调用函数一:

function mid=middle(F1)%求窗口元素的中值

[m,n]=size(F1);

x=m*n;

y=m*n;

k=0;

for i=1:m

for j=1:n

k=k+1;

x(k)=F1(i,j);%组成一维数组

end

end

for i=1:y

k=i;

for j=i+1:y

if x(j)

k=j;

end

end

if k~=i

t=x(k);

x(k)=x(i);

x(i)=t;

end

end

mid=x(ceil(y/2));

function ave=midf(F,m,n)

[X,Y]=size(F);

for i=ceil(m/2):X-fix(m/2)

for j=ceil(n/2):Y-fix(n/2)

F1=F(i-fix(m/2):i+fix(m/2),j-fix(n/2):j+fix(n/2));%扣出窗口内的元素组成一矩阵

F(i,j)=middle(F1);%求该矩阵的中值

end

end

ave=uint8(F);

处理前后图像:

结论:

平滑技术用于平滑图像的噪声,平滑噪声可以在空间域中进行,基本方法是求像素灰度的平均值或中值。但是这些很容易引起边缘的模糊,常用的有均值滤波、中值滤波,在使用时,针对不同的噪声,也需要不同的滤波法,没有哪种方法是绝对好,必须具体情况具体分析。

数字图像处理—实验四

源代码:

a=imread('cameraman.tif');

a=im2double(a);

figure;

subplot(1,3,1);imshow(a);title('input image');

h1 = fspecial('sobel');

MotionBlur1 = imfilter(a,h1);

subplot(1,3,2);imshow(MotionBlur1);title('sobel-Motion Blurred Image '); h2 = fspecial('Laplacia',0);

MotionBlur2 = imfilter(a,h2);

subplot(1,3,3);imshow(MotionBlur2);title('Laplacia-Motion Blurred Image');

figure('name','直接输入算子锐化处理','NumberTitle','Off');

subplot(1,3,1);imshow(a);title('input image');

dx=[-1 -2 -1;0 0 0;1 2 1];

dy=[-1 0 1;-2 0 2;-1 0 1];

d=(dx.^2+dy.^2).^0.5;

MotionBlur3= imfilter(a,d);

subplot(1,3,2);imshow(MotionBlur3);title('sobel-direct input-Motion Blurred Image ');

l=[0 -1 0;-1 4 -1;0 -1 0];

MotionBlur4 = imfilter(a,l);

subplot(1,3,3);imshow(MotionBlur4);title('Laplacia-direct input-Motion Blurred Image');

a=imread('skeleton.jpg');

a=im2double(a);

figure;

subplot(1,3,1);imshow(a);title('input image');

L=[-1 -1 -1;-1 8 -1;-1 -1 -1];

MotionBlur1 = imfilter(a,L);

subplot(1,3,2);imshow(MotionBlur1);title('对角线Laplacian算子');

MotionBlur2=MotionBlur1+a;

subplot(1,3,3);imshow(MotionBlur2);title('叠加后图形');

figure;

subplot(2,3,1);imshow(a);title('input image');

h1 = fspecial('sobel');

h2 = imfilter(a,h1);

subplot(2,3,2);imshow(h2);title('sobel-Motion Blurred Image '); MotionBlur3=imfilter(h2,[5 5]);

subplot(2,3,3);imshow(MotionBlur3);title('sobel-领域平均');

MotionBlur4 = imsubtract(MotionBlur2,h2);

subplot(2,3,4);imshow(MotionBlur4);title('相乘图象');

MotionBlur5=MotionBlur4+a;

subplot(2,3,5);imshow(MotionBlur5);title('与原始图叠加后图形');

MotionBlur6=imadjust(MotionBlur5,[],[],0.2);

subplot(2,3,6);imshow(MotionBlur6);title('幂指数为0.2的灰度变换');

a1=imread('cell.jpg');

a=im2double(a1);

f=double(a1);

[m,n]=size(f);

for i=1:m

for j=1:n

if i==m

G(i,j)=G(i-1,j) ;

elseif j==n

G(i,j)=G(i,j-1);

else

G(i,j)=abs(f(i,j)-f(i+1,j+1))+abs(f(i+1,j)-f(i,j+1));

end

end

end

Z=f;

figure;

for i=4:8

k=find(G>=i);Z(k)=255;

q=find(G

subplot(2,3,1);imshow(a);title('input image');

subplot(2,3,i-2);imshow(Z);title(['门限T为',num2str(i)]); end;

处理前后图像:

结论:

Sobel对噪声的增强作用小,具有一定的平滑特性和方向特性,处理后的图象边界比较粗略,反映边界信息较少,但反映的边界比较清晰。Laplacian算子对噪声的增强作用较大,处理后的图象边缘较sobel 弱,反映的边界信息不是太清晰。原图像经叠加,增强了噪声,但处理后的图像细节部分比原图像清晰。.经线性滤波处理后,去除噪声的同时使图象的边缘变得模糊了。

数字图像处理实验1

实验一 实验内容和步骤 练习图像的读取、显示和保存图像数据,步骤如下: (1)使用命令figure(1)开辟一个显示窗口 (2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示、二值图像和灰度图像,注上文字标题。 (3)保存转换后的灰度图像和二值图像 (4)在同一个窗口显示转换后的灰度图像的直方图 I=imread('BaboonRGB.bmp'); figure,imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_2bw=Im2bw(I_gray); figure,imshow(I_2bw); subplot(1,3,1),imshow(I),title('RGB图像'); subplot(1,3,2),imshow(I_gray),title('灰度图像'); subplot(1,3,3),imshow(I_2bw),title('二值图像'); imwrite(I_gray,'Baboongray.png'); imwrite(I_2bw,'Baboon2bw.tif'); figure;imhist(I_gray);

RGB 图 像灰度图 像二值图 像 050100150200250 500 1000 1500 2000 2500 3000

(5)将原RGB 图像的R 、G 、B 三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R 、G 、B 分量的不同之处。 [A_RGB,MAP]=imread('BaboonRGB.bmp'); subplot(2,2,1),imshow(A_RGB),title('RGB'); subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R'); subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G'); subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B'); (6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;A=imread('BaboonRGB.bmp'); figure(3),imshow(A),title('原图像'); B=imresize(A,1.5,'nearest'); figure(4),imshow(B),title('最邻近法') C=imresize(A,1.5,'bilinear'); ; figure(5),imshow(C),title('双线性插值'); D=imresize(A,1.5,'bicubic'); figure(6),imshow(D),title('双三次插值 '); RGB R G B

数字图像处理四个实验报告,带有源程序

数字图像处理 实验指导书 学院:通信与电子工程学院 专业:电子信息工程 班级: 学号: 姓名: XX理工大学

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。 图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: 亮度图像(Intensity images) 二值图像(Binary images) 索引图像(Indexed images) RGB图像(RGB images)

数字图像处理实验报告

数字图像处理实验报告 实验一数字图像基本操作及灰度调整 一、实验目的 1)掌握读、写图像的基本方法。 2)掌握MATLAB语言中图像数据与信息的读取方法。 3)理解图像灰度变换处理在图像增强的作用。 4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方 法。 二、实验内容与要求 1.熟悉MATLAB语言中对图像数据读取,显示等基本函数 特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。 1)将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread, imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。 2)将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray() 将其 转化为灰度图像,记为变量B。 2.图像灰度变换处理在图像增强的作用 读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程和调用Matlab函数完成如下实验。 1)显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用 imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰

度直方图与原灰度直方图的区别。 2) 对B 进行直方图均衡化处理,试比较与源图的异同。 3) 对B 进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。 图1.1 分段线性变换函数 三、实验原理与算法分析 1. 灰度变换 灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。 1) 图像反转 灰度级范围为[0, L-1]的图像反转可由下式获得 r L s --=1 2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围, 如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换: s = c log(1 + r ),c 为常数,r ≥ 0 3) 幂次变换: 0,0,≥≥=γγc cr s 4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求 局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 其对应的数学表达式为:

数字图像处理实验指导书模板

《数字图像处理》实验指导书 编写: 罗建军 海南大学三亚学院 10月

目录 一、概述 ....................................................................... 错误!未定义书签。 二、建立程序框架 ....................................................... 错误!未定义书签。 三、建立图像类 ........................................................... 错误!未定义书签。 四、定义图像文档实现图像读/写.............................. 错误!未定义书签。 五、实现图像显示 ....................................................... 错误!未定义书签。 六、建立图像处理类................................................... 错误!未定义书签。 七、实现颜色处理功能............................................... 错误!未定义书签。 (一) 亮度处理................................................................. 错误!未定义书签。 (二) 对比度处理............................................................. 错误!未定义书签。 (三) 色阶处理................................................................. 错误!未定义书签。 (四) 伽马变换................................................................. 错误!未定义书签。 (五) 饱和度处理............................................................. 错误!未定义书签。 (六) 色调处理................................................................. 错误!未定义书签。 八、实现几何变换功能............................................... 错误!未定义书签。 (一) 图像缩放................................................................. 错误!未定义书签。 (二) 旋转......................................................................... 错误!未定义书签。 (三) 水平镜像................................................................. 错误!未定义书签。 (四) 垂直镜像................................................................. 错误!未定义书签。 (五) 右转90度................................................................. 错误!未定义书签。 (六) 左转90度................................................................. 错误!未定义书签。 (七) 旋转180度............................................................... 错误!未定义书签。 九、实现平滑锐化功能............................................... 错误!未定义书签。 十、图像处理扩展编程............................................... 错误!未定义书签。

武汉科技大学 数字图像处理实验报告

二○一四~二○一五学年第一学期电子信息工程系 实验报告书 班级:电子信息工程(DB)1102班姓名 学号: 课程名称:数字图像处理 二○一四年十一月一日

实验一图像直方图处理及灰度变换(2学时) 实验目的: 1. 掌握读、写、显示图像的基本方法。 2. 掌握图像直方图的概念、计算方法以及直方图归一化、均衡化方法。 3. 掌握图像灰度变换的基本方法,理解灰度变换对图像外观的改善效果。 实验内容: 1. 读入一幅图像,判断其是否为灰度图像,如果不是灰度图像,将其转化为灰度图像。 2. 完成灰度图像的直方图计算、直方图归一化、直方图均衡化等操作。 3. 完成灰度图像的灰度变换操作,如线性变换、伽马变换、阈值变换(二值化)等,分别使用不同参数观察灰度变换效果(对灰度直方图的影响)。 实验步骤: 1. 将图片转换为灰度图片,进行直方图均衡,并统计图像的直方图: I1=imread('pic.jpg'); %读取图像 I2=rgb2gray(I1); %将彩色图变成灰度图 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('灰度图'); subplot(3,2,4); imhist(I2); %统计直方图 title('统计直方图'); subplot(3,2,5); J=histeq(I2); %直方图均衡 imshow(J); title('直方图均衡'); subplot(3,2,6); imhist(J); title('统计直方图');

原 图 灰度图 01000 2000 3000统计直方图 100200直方图均衡 0统计直方图 100200 仿真分析: 将灰度图直方图均衡后,从图形上反映出细节更加丰富,图像动态范围增大,深色的地方颜色更深,浅色的地方颜色更前,对比更鲜明。从直方图上反应,暗部到亮部像素分布更加均匀。 2. 将图片进行阈值变换和灰度调整,并统计图像的直方图: I1=imread('rice.png'); I2=im2bw(I1,0.5); %选取阈值为0.5 I3=imadjust(I1,[0.3 0.9],[]); %设置灰度为0.3-0.9 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('阈值变换'); subplot(3,2,5); imshow(I3); title('灰度调整'); subplot(3,2,2); imhist(I1); title('统计直方图'); subplot(3,2,4);

数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验步骤 1.图像的加法运算-imadd 对于两个图像f x,y和 (x,y)的均值有: g x,y=1 f x,y+ 1 (x,y) 推广这个公式为: g x,y=αf x,y+β (x,y) 其中,α+β=1。这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。 代码: I1 = imread('rice.png'); I2 = imread('cameraman.tif'); I3 = imadd(I1, I2,'uint8'); I4 = imadd(I1, I2,'uint16'); subplot(2, 2, 1), imshow(I1), title('?-ê?í???1'); subplot(2, 2, 2), imshow(I2), title('?-ê?í???2'); subplot(2, 2, 3), imshow(I3), title('8??í?????ê?'); subplot(2, 2, 4), imshow(I4), title('16??í?????ê?'); 结果截图:

2.图像的减法运算-imsubtract 说明: 背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。 示例代码如下: I1 = imread('rice.png'); background = imerode(I1, strel('disk', 15)); rice2 = imsubtract(I1, background); subplot(2, 2, 1), imshow(I1), title('?-ê?í???'); subplot(2, 2, 2), imshow(background), title('±3?°í???'); subplot(2, 2, 3), imshow(rice2), title('′|àíoóμ?í???'); 结果截图: 3.图像的乘法运算-immultiply

数字图像处理程序

数字图像处理程序

数字图像处理实验 图像处理实验(一)直方图 灰度变换是图像增强的一种重要手段,使图像对比度扩展,图像更加清晰,特 征更加明显。 灰度级的直方图给出了一幅图像概貌的描述,通过修改灰度直方图来得到图像 增强。 1、灰度直方图 (1)计算出一幅灰度图像的直方图 clear close all I=imread('004.bmp'); imhist(I) title('实验一(1)直方图'); (2)对灰度图像进行简单的灰度线形变换, figure subplot(2,2,1) imshow(I); title('试验2-灰度线性变换'); subplot(2,2,2) histeq(I); (3)看其直方图的对应变化和图像对比度的变化。 原图像 f(m,n) 的灰度范围 [a,b] 线形变换为图像 g(m,n),灰度范围[a’,b’]公式:g(m,n)=a’+(b’-a’)* f(m,n) /(b-a) figure subplot(2,2,1) imshow(I) J=imadjust(I,[0.3,0.7],[0,1],1); title(' 实验一(3)用g(m,n)=a’+(b’-a’)* f(m,n) /(b-a)进行变换 '); subplot(2,2,2) imshow(J) subplot(2,2,3) imshow(I) J=imadjust(I,[0.5 0.8],[0,1],1); subplot(2,2,4) imshow(J) (4) 图像二值化(选取一个域值,(5) 将图像变为黑白图像) figure subplot(2,2,1)

数字图像处理实验报告

目录 实验一:数字图像的基本处理操作 (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('原图像'); 结果如图所示:

数字图像处理实验

《数字图像处理》 实验报告 学院:信息工程学院 专业:电子信息工程 学号: 姓名: 2015年6月18日

目录 实验一图像的读取、存储和显示 (2) 实验二图像直方图分析 (6) 实验三图像的滤波及增强 (15) 实验四噪声图像的复原 (19) 实验五图像的分割与边缘提取 (23) 附录1MATLAB简介 (27)

实验一图像的读取、存储和显示 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像的显示。 二、实验原理 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 三、实验设备 (1) PC计算机 (2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3) 实验所需要的图片 四、实验内容及步骤 1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件设为flower.jpg语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 7.用imread()读入图像:Lenna.jpg 和camema.jpg; 8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;

数字图像处理——彩色图像实验报告

6.3实验步骤 (1)对彩色图像的表达和显示 * * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * * rgbcube(0,0,10); %从正面观察彩色立方体 rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体 %* * * * * * * * * *索引图像的显示和转换* * * * * * * * * * f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %rgb图像转换成8色索引图像,不采用抖动方式 [X1,map1]=rgb2ind(f,8,'nodither'); figure,imshow(X1,map1); %采用抖动方式转换到8色索引图像 [X2,map2]=rgb2ind(f,8,'dither'); figure,imshow(X2,map2); %显示效果要好一些 g=rgb2gray(f); %f转换为灰度图像 g1=dither(g);%将灰色图像经过抖动处理,转换打二值图像figure,imshow(g);%显示灰度图像 figure,imshow(g1);%显示抖动处理后的二值图像 程序运行结果:

彩色立方体原图 不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像 灰度图像抖动处理后的二值图像

(2)彩色空间转换 f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %转换到NTSC彩色空间 ntsc_image=rgb2ntsc(f); figure,imshow(ntsc_image(:,:,1));%显示亮度信息figure,imshow(ntsc_image(:,:,2));%显示色差信息figure,imshow(ntsc_image(:,:,3));%显示色差信息 %转换到HIS彩色空间 hsi_image=rgb2hsi(f); figure,imshow(hsi_image(:,:,1));%显示色度信息figure,imshow(hsi_image(:,:,2)); %显示饱和度信息figure,imshow(hsi_image(:,:,3));%显示亮度信息 程序运行结果: 原图 转换到NTSC彩色空间

数字图像处理实验报告

数字图像处理实验报告

实验一数字图像处理编程基础 一、实验目的 1. 了解MA TLAB图像处理工具箱; 2. 掌握MA TLAB的基本应用方法; 3. 掌握MA TLAB图像存储/图像数据类型/图像类型; 4. 掌握图像文件的读/写/信息查询; 5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法; 6. 编程实现图像类型间的转换。 二、实验内容 1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。 2. 运行图像处理程序,并保存处理结果图像。 三、源代码 I=imread('cameraman.tif') imshow(I); subplot(221), title('图像1'); imwrite('cameraman.tif') M=imread('pout.tif') imview(M) subplot(222), imshow(M); title('图像2'); imread('pout.bmp') N=imread('eight.tif') imview(N) subplot(223), imshow(N); title('图像3'); V=imread('circuit.tif') imview(V) subplot(224), imshow(V); title('图像4');

N=imread('C:\Users\Administrator\Desktop\1.jpg') imshow(N); I=rgb2gary(GRB) [X.map]=gary2ind(N,2) RGB=ind2 rgb(X,map) [X.map]=gary2ind(I,2) I=ind2 gary(X,map) I=imread('C:\Users\dell\Desktop\111.jpg'); subplot(231),imshow(I); title('原图'); M=rgb2gray(I); subplot(232),imshow(M); [X,map]=gray2ind(M,100); subplot(233),imshow(X); RGB=ind2rgb(X,map); subplot(234),imshow(X); [X,map]=rbg2ind(I); subplot(235),imshow(X); 四、实验效果

数字图像处理实验报告

数字图像处理实验 报告 学生姓名:学号: 专业年级: 09级电子信息工程二班

实验一常用MATLAB图像处理命令 一、实验内容 1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 实验结果如右图: 代码如下: Subplot (1,3,1) i=imread('E:\数字图像处理\2.jpg') imshow(i) title('RGB') Subplot (1,3,2) j=rgb2gray(i) imshow(j) title('灰度') Subplot (1,3,3) k=im2bw(j,0.5) imshow(k) title('二值') 2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (3,2,1) i=imread('E:\数字图像处理 \16.jpg') x=imresize(i,[250,320]) imshow(x) title('原图x') Subplot (3,2,2) j=imread(''E:\数字图像处理 \17.jpg') y=imresize(j,[250,320]) imshow(y) title('原图y') Subplot (3,2,3) z=imadd(x,y) imshow(z)

title('相加结果');Subplot (3,2,4);z=imsubtract(x,y);imshow(z);title('相减结果') Subplot (3,2,5);z=immultiply(x,y);imshow(z);title('相乘结果') Subplot (3,2,6);z=imdivide(x,y);imshow(z);title('相除结果') 3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (2,2,1) i=imread('E:\数字图像处理 \23.jpg') imshow(i) title('原图') Subplot (2,2,2) J = imadjust(i,[],[],3); imshow(J) title('变暗') Subplot (2,2,3) J = imadjust(i,[],[],0.4) imshow(J) title('变亮') Subplot (2,2,4) J=255-i Imshow(J) title('变负') 二、实验总结 分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。 解答:图像减运算与图像加运算的原理和用法类似,同样要求两幅图像X、Y的大小类型相同,但是图像减运算imsubtract()有可能导致结果中出现负数,此时系统将负数统一置为零,即为黑色。 乘运算实际上是对两幅原始图像X、Y对应的像素点进行点乘(X.*Y),将结果输出到矩阵Z中,若乘以一个常数,将改变图像的亮度:若常数值大于1,则乘运算后的图像将会变亮;叵常数值小于是,则图像将会会暗。可用来改变图像的灰度级,实现灰度级变换,也可以用来遮住图像的某些部分,其典型应用是用于获得掩膜图像。 除运算操作与乘运算操作互为逆运算,就是对两幅图像的对应像素点进行点(X./Y), imdivide()同样可以通过除以一个常数来改变原始图像的亮度,可用来改变图像的灰度级,其典型运用是比值图像处理。 加法运算的一个重要应用是对同一场景的多幅图像求平均值 减法运算常用于检测变化及运动的物体,图像相减运算又称为图像差分运算,差分运算还可以用于消除图像背景,用于混合图像的分离。

数字图像处理实验

学院计算机与通信工程学院专业生物医学工程专业 班级51111 学号5111133 姓名杨静 指导教师贾朔 2014年04月21日

实验一图像的基本运算 一、实验目的: 1、掌握图像处理中的点运算、代数运算、逻辑运算和几何运算及应用。 2、掌握各种运算对于图像处理中的效果。 二、实验内容: 1、(1)选择一幅图像lena8.jpg,设置输入/输出变换的灰度级范围,a=0.2,b=0.6,c=0.1,d=0.9. (2)设置非线性扩展函数的参数c=2. (3)采用灰度级倒置变换函数s=255-r进行图像变换 (4)设置二值化图像的阈值,分别为level=0.4,level=0.7 解:参考程序如下: I=imread('C:\lena8.jpg'); figure; subplot(2,3,1); imshow(I); title('原图'); J=imadjust(I,[0.3;0.6],[0.1;0.9]); %设置灰度变换的范围 subplot(2,3,2); imshow(J); title('线性扩展'); I1=double(I); %将图像转换为double类型 I2=I1/255; %归一化此图像 C=2; K=C*log(1+I2); %求图像的对数变换 subplot(2,3,3); imshow(K); title('非线性扩展'); M=im2bw(I,0.5); M=~M; %M=255-I; %将此图像取反 %Figure subplot(2,3,4); imshow(M); title('灰度倒置'); N1=im2bw(I,0.4); %将此图像二值化,阈值为0.4 N2=im2bw(I,0.7); %将此图像二值化,阈值为0.7 subplot(2,3,5); imshow(N1); title('二值化阈值0.4'); subplot(2,3,6); imshow(N2); title('二值化阈值0.7');

数字图像处理实验一(附源程序)

数字图像处理—实验一 一.实验内容: 图像灰度变换 二.实验目的: 学会用Matlab 软件对图像灰度进行变换;感受各种不同的灰度变换方法对最终图像效果的影响。 三.实验步骤: 1.获取实验用图像:rice.jpg. 使用imread 函数将图像读入Matlab 。 2.产生灰度变换函数T1,使得: 0.3r r < 0.35 s = 0.105 + 2.6333(r – 0.35) 0.35 ≤ r ≤ 0.65 1 + 0.3(r – 1) r > 0.65 用T1对原图像rice.jpg 进行处理,使用imwrite 函数保存处理后的新图像。 3.产生灰度变换函数T2,使得: s = 用T2对原图像rice.jpg 进行处理,使用imwrite 保存处理后的新图像。 4.分别用 s = r 0.6; s = r 0.4; s = r 0.3 对kids.tiff 图像进行处理。为简便起见,请 使用Matlab 中的imadjust 函数。使用imwrite 保存处理后的新图像。 5.对circuit.jpg 图像实施反变换(Negative Transformation )。s =1-r; 使用 imwrite 保存处理后的新图像。 6.对rice.jpg 图像实施灰度切片(Gray-level slicing )。具体要求如下: 当0.2 ≤ r ≤ 0.4时,将r 置为0.6, 当r 位于其他区间时, 保持其灰度与原图像一样。使用imwrite 保存处理后的新图像。 7.利用灰度变换对Picture.jpg 做增强处理,突出图中的人物,改善整个图像过 于灰暗的背景。通过调节参数,观察变换后的图像与原始图像的变化,寻找出最佳的灰度变换结果。写出所采用的拉伸表达式。(提示:用imhist 观察图像直方图,利用分段线性灰度变换。 )

数字图像处理实验一

大学实验报告 学院:计算机科学与技术专业:信息安全班级:131 姓名学号实验组实验时间2016/4/22 指导教师成绩 实验项目名称图像基本操作 实验目的 利用MATLAB软件,熟悉图像的数据矩阵操作、图像的类型转换及图像的存储等基本操作。 1.熟悉图像矩阵的基本操作 2.掌握图像数据类型转换及图像类型转换 3.掌握图像文件的读写 4.掌握图像及灰度图像直方图的显示 5.掌握图像缩放和旋转 实验要求 利用MATLAB软件,熟悉图像的数据矩阵操作、图像的类型转换及图像的存储等基本操作。 1.熟悉图像矩阵的基本操作 2.掌握图像数据类型转换及图像类型转换 3.掌握图像文件的读写 4.掌握图像及灰度图像直方图的显示 5.掌握图像缩放和旋转 实验原理1.关于图像矩阵 MATLAB中图像数据以矩阵方式的存储。所以有必要学会关于矩阵的操作,由于篇幅有限,这里只作简要的介绍。 生成矩阵的函数有: eye 生成单位矩阵 ones全1阵 zeros 全零阵 rand 均匀随机阵 randn 正态随机阵 2.图像数据类型及图像类型 2.1 图像数据类型转换 MATLAB中图像数据矩阵的存储方式为双精度(double)类型即64位浮点数。而存储图像时MATLAB有时采用无符号整型(uint8)即图像矩阵中的每个数据占用一个字节。由于大多数运算和函数(比如最基本的矩阵加减运算)都不支持uint8类型,所以运算时通常要将图像转换成 double型。 函数double将数据转换为双精度浮点类型,调用格式为: X64=double(x8) /256 2.2 图像类型及转换

在MATLAB中,一幅图像可能包含一个数据矩阵,也可能有一个颜色映像表矩阵。MATLAB图像处理工具箱支持四种图像类型,其区别在于数据矩阵元素的不同含意。它们是: ● 真彩色图像 ● 索引图像 ● 灰度图像 ● 二值图像 (1)真彩色图像 真彩色图像又称RGB图像,对于一个尺寸为M×N的彩色图像来说,在MATLAB中则存储为一个M×N×3的多维数组,像素的颜色由保存在像素位置上的R、G、B的强度值的组合来确定。如果需要知道图像A中(x,y)处的像素值,则可以使用这样的代码A(x,y,1:3)。 (2)索引图像 MATLAB中的索引图像包含两个结构,一个是调色板,一个是图像数据矩阵。调色板是一个m×3的色彩映射矩阵,矩阵的每一行都代表一种色彩,与真彩色图像相同,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。调色板通常和索引图像存在一起,当读入图像时,MATLAB同时加载调色板和图像。 (3)灰度图像 灰度图像就是只有强度信息,而没有颜色信息的图像。存储灰度图像只需要一个数据矩阵,矩阵的每个元素表示对应位置像素的灰度值,灰度图像的数据类型可以是doubIe类型,这时值域为[0,1],也可以uint8类刑,值域是[0,255]。 (4)二值图像 二值图像就是只有黑白两种值的图像,我们可以把它看作是特殊的灰度图像。二值图像只需一个数据矩阵来存储,每个像素只取0或1。 MATLAB提供了若干函数,用于图像类型的转换,这些函数如下所示: ●rgb2gray 将RGB图像转换成灰度图像 ●Gray2ind 将灰度图像转换成索引图像 ●Im2bw 设定阈值将图像转换为二值图像 ●Im2double 将图像数据阵列转换为double型 ●Im2unit8 将图像数据阵列转换为unit8型 ●Im2unit16 将图像数据阵列转换为unit16型 ●Ind2gray 将索引图像转换为灰度图像 ●Ind2rgb 将索引图像转换成真彩色图像 2.3 图像读写及显示 MATLAB为用户提供了专门的函数以从图像格式的文件中读写图像数据。 (1)图像文件的读取 利用imread函数可以完成图像文件的读取操作,常见调用格式为: A = imread(FILENAME,FMT) 其作用是将文件名用字符串FILENAME表示的、扩展名用字符串FMT(表示图像文件格式)表示的图像文件中的数据读到矩阵A中。如果FILENAME所指的为灰度图像,则A为M×N的二维矩阵;如果FILENAME所指的为RGB图像,则A为M×N×3的三维矩阵。 (2)图像文件的写入(保存) 利用imwrite函数完成图像的写入操作,也完全支持上述各种图像文件的格式,其常用的调用格式为: imwrite(A,FILENAME,FMT)

数字图像处理实验程序MATLAB.

实验一 内容(一) (1)彩色图像变灰度图像 A=imread('1.jpg'); B=rgb2gray(A); figure subplot(1,2,1), imshow(A) title('原图') subplot(1,2,2), imshow(B) title('原图灰度图像') (2)彩色图像变索引图像 A=imread('1.jpg'); figure subplot(1,2,1), imshow(A) title('原图') [X,map]=rgb2ind(A,128); subplot(1,2,2), imshow(X,map) title('原图索引图像') (3)彩色图像变二值图像 A=imread('1.jpg'); figure subplot(1,2,1), imshow(A) title('原图') C=im2bw(A,0.2); subplot(1,2,2), imshow(C) title('原图二值图像') (4)灰度图像变索引图像(一) A=imread('1.jpg'); figure B=rgb2gray(A); subplot(1,2,1), imshow(B) title('灰度图像') C=grayslice(B,39); subplot(1,2,2), imshow(C) title('灰度变索引图像')

(5)灰度图像变索引图像(二) A=imread('1.jpg'); figure B=rgb2gray(A); subplot(1,2,1), imshow(B) title('灰度图像') [X,map]=gray2ind(B,63); subplot(1,2,2), imshow(X,map) title('灰度变索引图像') (6)灰度图像变彩色图像 A=imread('1.jpg'); figure B=rgb2gray(A); subplot(1,2,1), imshow(B) title('灰度图像') C=gray2rgb(B,map); subplot(1,2,2), imshow(C) title('灰度变彩色图像') 内容(二) (1)灰度平均值 A=imread('1.jpg'); figure B=rgb2gray(A); subplot(1,2,1), imshow(B) title('灰度图像') B=double(B); [m,n]=size(B); sumg=0.0; for i=1:m; for j=1:n; sumg=sumg+B(i,j); end end avg=sumg/(m*n) % 均值 maxg=max(max(B)) % 区域最大灰度ming=min(min(B)) % 区域最小灰度 (2)彩色平均值

相关主题