数字图像处理实验报告.docx

上传人:b****7 文档编号:10274648 上传时间:2023-02-09 格式:DOCX 页数:29 大小:35.63KB
下载 相关 举报
数字图像处理实验报告.docx_第1页
第1页 / 共29页
数字图像处理实验报告.docx_第2页
第2页 / 共29页
数字图像处理实验报告.docx_第3页
第3页 / 共29页
数字图像处理实验报告.docx_第4页
第4页 / 共29页
数字图像处理实验报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数字图像处理实验报告.docx

《数字图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告.docx(29页珍藏版)》请在冰豆网上搜索。

数字图像处理实验报告.docx

数字图像处理实验报告

数字图像处理实验报告

实验一数字图像处理编程根底

一、实验目的

1.了解MATLAB图像处理工具箱;

2.掌握MATLAB的根本应用方法;

3.掌握MATLAB图像存储/图像数据类型/图像类型;

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)

[*.map]=gary2ind(N,2)

RGB=ind2rgb(*,map)

[*.map]=gary2ind(I,2)

I=ind2gary(*,map)

I=imread('C:

\Users\dell\Desktop\111.jpg');

subplot(231),imshow(I);

title('原图');

M=rgb2gray(I);

subplot(232),imshow(M);

[*,map]=gray2ind(M,100);

subplot(233),imshow(*);

RGB=ind2rgb(*,map);

subplot(234),imshow(*);

[*,map]=rbg2ind(I);

subplot(235),imshow(*);

四、实验效果

实验二图像几何变换实验

一、实验目的

1.学习几种常见的图像几何变换,并通过实验体会几何变换的效果;

2.掌握图像平移、剪切、缩放、旋转、镜像等几何变换的算法原理及编程实现;

3.掌握matlab编程环境中根本的图像处理函数。

二、实验原理

1.初始坐标为

的点经过平移

,坐标变为

,两点之间的关系为:

,以矩阵形式表示为:

2.图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为:

3.图像缩小和放大变换矩阵一样:

时,图像缩小;当

时,图像放大。

4.图像旋转定义为以图像中*一点为原点以逆时针或顺时针方向旋转一定角度。

其变换矩阵为:

该变换矩阵是绕坐标轴原点进展的,如果是绕一个指定点旋转,则先要将坐标系平移到该点,进展旋转,然后再平移回到新的坐标原点。

三、实验容

1.启动MATLAB程序,对图像文件分别进展平移、垂直镜像变换、水平镜像变换、缩放和旋转操作。

2.运行图像处理程序,并保存处理结果图像。

四、源代码及实验效果

1.平移

I=imread('circuit.tif');

subplot(121),imshow(I);

title('before');

I=double(I);

M=zeros(size(I));

N=size(I);

*=10;

y=10;

M(*+1:

N

(1),y+1:

N

(2))=I(1:

N

(1)-*,1:

N

(2)-y);

subplot(122),imshow(uint8(M));

title('after');

2.水平垂直镜像

I=imread('pout.tif');

subplot(131),imshow(I);

title('before');

I=double(I);

A=zeros(size(I));

B=zeros(size(I));

M=size(I);

A(1:

M

(1),1:

M

(2))=I(M

(1):

-1:

1,1:

M

(2));

B(1:

M

(1),1:

M

(2))=I(1:

M

(1),M

(2):

-1:

1);

subplot(132),imshow(uint8(A));

title('竖直');

subplot(133),imshow(uint8(B));

title('水平');

3.缩放

I=imread('pout.tif');

subplot(131),imshow(I);

title('before');

I=double(I);

A=zeros(size(I));

B=zeros(size(I));

[m,n]=size(I);

*=1.8;

y=1.8;

*2=0.85;

y2=0.85;

fori=1:

m

forj=1:

n

i1=round(i**);

j1=round(j*y);

i2=round(i**2);

j2=round(j*y2);

if(j1>=0)&&(i1>=0)&&(i1<=m)&&(j1<=n)

A(i,j)=I(i1,j1);

end

if(j2>=0)&&(i2>=0)&&(i2<=m)&&(j2<=n)

B(i,j)=I(i2,j2);

end

end

end

subplot(132),imshow(uint8(A));

title('small');

subplot(133),imshow(uint8(B));

title('big');

4.旋转

jiao=50;

M=imread('cameraman.tif');

imshow(M);

[hw]=size(M);

theta=jiao/180*pi;

rot=[cos(theta)-sin(theta)0;sin(theta)cos(theta)0;001];%建立变换矩阵

pi*1=[111]*rot;%变后左上

pi*2=[1w1]*rot;%变后右上

pi*3=[h11]*rot;%变后左下

pi*4=[hw1]*rot;%变后右下

height=round(ma*([abs(pi*1

(1)-pi*4

(1))+0.5abs(pi*2

(1)-pi*3

(1))+0.5]));%新宽

width=round(ma*([abs(pi*1

(2)-pi*4

(2))+0.5abs(pi*2

(2)-pi*3

(2))+0.5]));%新高

N=zeros(height,width);

chao_y=abs(min([pi*1

(1)pi*2

(1)pi*3

(1)pi*4

(1)]));%y负轴超量

chao_*=abs(min([pi*1

(2)pi*2

(2)pi*3

(2)pi*4

(2)]));%*负轴超量

fori=1-chao_y:

height-chao_y

forj=1-chao_*:

width-chao_*

pi*=[ij1]/rot;%用变换后图像的点的坐标去寻找原图像点的坐标,

float_Y=pi*

(1)-floor(pi*

(1));%向下舍入

float_*=pi*

(2)-floor(pi*

(2));

ifpi*

(1)>=1&&pi*

(2)>=1&&pi*

(1)<=h&&pi*

(2)<=w

pi*_up_left=[floor(pi*

(1))floor(pi*

(2))];%四个相邻的点

pi*_up_right=[floor(pi*

(1))ceil(pi*

(2))];

pi*_down_left=[ceil(pi*

(1))floor(pi*

(2))];

pi*_down_right=[ceil(pi*

(1))ceil(pi*

(2))];

value_up_left=(1-float_*)*(1-float_Y);%周围四个点权重

value_up_right=float_**(1-float_Y);

value_down_left=(1-float_*)*float_Y;

value_down_right=float_**float_Y;

N(i+chao_y,j+chao_*)=value_up_left*M(pi*_up_left

(1),pi*_up_left

(2))+...

value_up_right*M(pi*_up_right

(1),pi*_up_right

(2))+...

value_down_left*M(pi*_down_left

(1),pi*_down_left

(2))+...

value_down_right*M(pi*_down_right

(1),pi*_down_right

(2));

end

end

end

figure,imshow(uint8(N))

实验三图像增强实验

一、实验目的

1.掌握根本的图像增强方法,观察图像增强的效果,加深对灰度直方图的理解。

2.掌握对数和和指数增强,直方图均衡化方法,重点掌握图像直方图增强的原理和程序设计。

二、实验原理

对数变化能对原图像的动态围进展压缩,其数学表达如下:

其中C为尺寸比例常数。

指数变化一般的表示形式:

〔a,b,c用于调整曲线的位置和形状的参数。

利用直方图统计的结果,使图像的直方图均衡的方法称为直方图均衡化,直方图均衡化可以到达增强图像显示效果的作用。

通过直方图统计,可以观察出,图像中各种亮度所占的比例大局部布不均匀,设法增加在直方图统计中所占比例高的象素和其他比例少的象素之间亮度差,可以提高图像的显示效果。

简单来说,直方图增强的方法就是压缩直方图中比例少的象素所占用的灰度围,多出来的灰度空间按照统计比例分配给直方图中比例高的象素使用。

这种方法主要是针对人眼对灰度差异越大的图像越容易分辨的特点而进展的增强。

三、实验容

1.实现对数增强或指数增强。

2.实现图像直方图均衡化增强。

四、分析思考

思考为什么进展图像直方图均衡化后,能够增强图像效果。

答:

因为直方图均衡化处理之后,原来比拟少像素的灰度会被分配到别的灰度去,像素相对集中,处理后灰度围变大,比照度变大,清晰度变大,所以能有效增强图像。

  直方图均衡化是图像处理领域中利用图像直方图对比照度进展调整的方法。

这种方法通常用来增加许多图像的局部比照度,尤其是当图像的有用数据的比照度相当接近的时候。

通过这种方法,亮度可以更好地在直方图上分布。

这样就可以用于增强局部的比照度而不影响整体的比照度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。

五、源代码及实验效果

1.对数增强

I=imread('cameraman.tif');

subplot(221);

imshow(I);

I=double(I);

I2=41*log(1+I);

I2=uint8(I2);

subplot(222);

imshow(I2);

2.指数增强

I=imread('circuit.tif');

>>[M,N]=size(I);

>>g=zeros(M,N);

>>I=double(I);

>>g=double(g);

>>k1=min(min(I));

>>k2=ma*(ma*(I));

>>a=(k2-k1)/2;

b=k2-80;

c=k1-20;

fori=1:

M

forj=1:

N

g(i,j)=b^(c*(I(i,j)-a))-1;

end

end

>>figure;

>>subplot(121);

imshow(I,[]);

>>subplot(122);

>>imshow(g,[]);

>>

3.直方图均衡化增强

I=imread('pout.tif');

graydis=zeros(1,256);%设置矩阵大小

graydispro=zeros(1,256);

new_graydis=zeros(1,256);

new_graydispro=zeros(1,256);

[hw]=size(I);

N=zeros(h,w);

%计算原始直方图各灰度级像素个数graydis

for*=1:

h

fory=1:

w

graydis(1,I(*,y))=graydis(1,I(*,y))+1;

end

end

%计算原始直方图graydispro

graydispro=graydis./sum(graydis);

subplot(2,2,1);

plot(graydispro);

title('灰度直方图');

*label('灰度值');ylabel('像素的概率密度');

%计算原始累计直方图

fori=2:

256

graydispro(1,i)=graydispro(1,i)+graydispro(1,i-1);

end

%计算和原始灰度对应的新的灰度t[],建立映射关系

fori=1:

256

t(1,i)=floor(254*graydispro(1,i)+0.5);

end

%统计新直方图各灰度级像素个数

fori=1:

256

new_graydis(1,t(1,i)+1)=new_graydis(1,t(1,i)+1)+graydis(1,i);

end

%计算新的灰度直方图new_graydispro

new_graydispro=new_graydis./sum(new_graydis);

subplot(2,2,2);

plot(new_graydispro);

title('均衡化后的灰度直方图');

*label('灰度值');ylabel('像素的概率密度');

%计算直方图均衡后的新图new_tu

for*=1:

h

fory=1:

w

N(*,y)=t(1,I(*,y));

end

end

subplot(2,2,3),imshow(I,[]);

title('原图');

subplot(2,2,4),imshow(N,[]);

title('直方图均衡化后的图');

实验四图像滤波实验

一、实验目的

掌握中值滤波方法,掌握图像锐化方法,比拟各个梯度算子锐化的效果。

掌握频域滤波方法,观察低通滤波和高通滤波的效果。

二、实验原理

中值滤波是一种非线性平滑滤波,它是用一个有奇数点的滑动窗口,将窗口中心点的值用窗口各点的中值代替。

图像的锐化是使边缘和轮廓线模糊的图像变得清晰,使其细节更加清晰。

从数学上看,图像模糊的实质是图像受到平均或者积分运算的影响,因此对其进展逆运算〔如微分运算〕就可以使图像清晰。

在频域上卷积被表示为乘积,因此在频域上对图像进展滤波就变得更加直观了。

在频域上进展滤波的步骤:

计算需增强的图像的傅里叶变化。

将其与1个传递函数相乘。

再将结果进展傅里叶逆变化可以得到增强的图像。

三、实验容

1.选择测试图像分别添加高斯、椒盐、泊松噪声,实现中值滤波;

2.选择测试图像实现两种常用梯度算子〔Sobel算子、Prewitt算子〕;

3.选择测试图像实现理想低通滤波;

4.选择测试图像实现巴特沃斯高通滤波。

四、分析思考

依次给出"均值滤波器、中值滤波器、laplace滤波器〞是线性还是非线性的。

答:

均值滤波器和中值滤波器是线性的,laplace滤波器是非线性的。

五、源代码及实验效果

1.椒盐噪声

I=imread('cameraman.tif');

I=imnoise(I,'salt&pepper',0.02);

I=double(I);

[dep,wide]=size(I);

M=ones(size(I));

fori=3:

dep-2

forj=3:

wide-2

M(i,j)=median([I(i-2,j-2)I(i-2,j-1)I(i-2,j)I(i-2,j+1)I(i-2,j+2)I(i-1,j-2)I(i-1,j-1)I(i-1,j)I(i-1,j+1)I(i-1,j+2)I(i,j-2)I(i,j-1)I(i,j)I(i,j+1)I(i,j+2)I(i+1,j-2)I(i+1,j-1)I(i+1,j)I(i+1,j+1)I(i+1,j+2)I(i+2,j-2)I(i+2,j-1)I(i+2,j)I(i+2,j+1)I(i+2,j+2)]);

end

end

fori=3:

dep-2

M(i,1)=M(i,3);

M(i,2)=M(i,3);

M(i,wide-1)=M(i,wide-2);

end

M(1,:

)=M(3,:

);

M(2,:

)=M(3,:

);

M(dep,:

)=M(dep-2,:

);

M(dep-1,:

)=M(dep-2,:

);

figure

subplot(121),imshow(uint8(I));

subplot(122),imshow(uint8(M));

2.高斯噪声

3.泊松噪声

4.Sobel

I=imread('cameraman.tif');

[H,W]=size(I);

M=double(I);

J=M;

fori=2:

H-1

forj=2:

W-1

J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+2*M(i,j+1)-2*M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i-1,j-1)-M(i+1,j-1)+2*M(i-1,j)-2*M(i+1,j)+M(i-1,j+1)-M(i+1,j+1));

end;

end;

subplot(1,2,1);imshow(I);title('原图');

subplot(1,2,2);imshow(uint8(J));title('Sobel处理后');

5.Prewwit

I=imread('cameraman.tif');

[H,W]=size(I);

M=double(I);

J=M;

fori=2:

H-1

forj=2:

W-1

J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+M(i,j+1)-M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i-1,j-1)-M(i+1,j-1)+M(i-1,j)-M(i+1,j)+M(i-1,j+1)-M(i+1,j+1));

end;

end;

subplot(1,2,1);imshow(I);title('原图');

subplot(1,2,2);imshow(uint8(J));title('Prewitt处理后');

6.理想低通滤波

G=imread('pout.tif');

J=imnoise(G,'salt&pepper',0.02);

subplot(121),imshow(J);title('添加椒盐噪声图像');

J=double(J);

%采用傅立叶变换

f=fft2(J);

%采用矩阵平衡

g=fftshift(f);

[M,N]=size(f);

n=3;

d0=45;

n1=floor(M/2);%向下取整

n2=floor(N/2);

fori=1:

M

forj=1:

N

d=sqrt((i-n1)^2+(j-n2)^2);

ifd<=d0

h=1;

else

h=0;

end

g(i,j)=h*g(i,j);

end

end

g=ifftshift(g);

g=uint8(real(ifft2(g)));

subplot(122);

imshow(g);title('理想低通滤波后图像');

7.巴特沃斯高通滤波

J=imread('cameraman.tif');

subplot(221),imshow(uint8(J));

title('模糊图像');

J=double(J);

f=fft2(J);

g=fftshift(f);

[M,N]=size(f);

n1=floor(M/2);

n2=floor(N/2);

n=2;

d0=20;

fori=1:

M

forj=1:

N

d=sqrt((i-n1)^2+(j-n2)^2);

ifd==0

h1=0;

h2=0.5;

else

h1=1/(1+(d0/d)^(2*n));

h2=1/(1+(d0/d)^(2*n))+0.5;

end

gg1(i,j)=h1*g(i,j);

gg2(i,j)=h2*g(i,j);

end

end

gg1=ifftshift(gg1);

gg1=uint8(real(ifft2(gg1)));

subplot(223);

imshow(gg1);

title('巴特沃斯高通滤波结果');

gg2=ifftshift(gg2);

gg2=uint8(real(ifft2(gg2)));

subplot(224);

imshow(gg2);

title('巴特沃斯高通加强滤波结果');

实验五图像分割实验

一、实验目的

掌握梯度边缘检测算子,了解拉普拉斯边缘检测算子和Canny边缘检测算子;

掌握边界跟踪方法及其原理;

掌握自动阈值法和分水岭法。

二、实验原理

图像分割是按照一定的规则把图像划分成假设干个互不相交、具有一定性质的区域,把人们关注的局部从图像中提取出来,进一步加以研究分析和处理。

图像分割的结果是图像特征提取和识别等图像理解的根底,对图像分割的研究一直是数字图像处理技术研究中的热点和焦点。

图像分割使得其后的图像分析,识别等高级处理阶段所要处理的数据量大大减少,同时又保存有关图像构造特征的信息。

图像分割在不同的领域也有其它名称,如目标轮廓技术、目标检测技术、阈值化技术、目标跟踪技术等,这些技术本身或其核心实际上也就是图像分割技术。

边缘是图像上灰度变化最剧烈的地方,传统的边缘检测就是利用了这个特点,对图像各个像素点进展微分或求二阶微分来确定边缘像素点。

一阶微分图像的峰值处对应着图像的边缘点;二阶微分图像的过零点处对应着图像的边缘点。

根据数字图像的特点,处理图像过程中常采用差分来代替导数运算,对于图像的简单一阶导数运算,由于具有固定的方向性,只能检测特定方向的边缘,所以不具有普遍性。

为了克制一阶导数的缺点,我们定义图像的梯度为梯度算子,它是图像处理中最常用的一阶微分算法。

图像梯度的最重要性质是梯度的方向是在图像灰度最大变化率上,它恰好可以反映出图像边缘上的灰度变化。

三、实验容

1.实现三种梯度算子(Roberts、Sobel、Prewitt)的边缘检测。

2.实现对一二值图像的边界跟踪。

3.实现分水

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1