数字图像.docx

上传人:b****5 文档编号:7330972 上传时间:2023-01-23 格式:DOCX 页数:31 大小:2.46MB
下载 相关 举报
数字图像.docx_第1页
第1页 / 共31页
数字图像.docx_第2页
第2页 / 共31页
数字图像.docx_第3页
第3页 / 共31页
数字图像.docx_第4页
第4页 / 共31页
数字图像.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

数字图像.docx

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

数字图像.docx

数字图像

姓名:

吴印水班级:

通信122班

学号:

6100212078

实验一图像信号的数字化

一:

实验目的:

通过本实验了解图像的数字化参数取样频率(象素个数)、量化层数与图像质量的关系。

二:

实验内容:

编写并调试图像数字化程序,要求参数 k,n 可调。

其中k为亚抽样比例;n为量化比特数;选择任意图像进行处理,在显示器上观察各种数字化参数组合下的图像效果

三:

实验程序:

Chouyang.m

functionnewimg=cdq(img,k,n)

M=size(img,1);

N=size(img,2);

a=2^(8-n);

i=1;j=1;

whilei

whilej

fg=round(img(i,j)/a)*a;

fori1=0:

k-1

forj1=0:

k-1

if(i+i1

newimg(i+i1,j+j1)=fg;

end

end

end

j=j+k;

end

ifj>=N

j=1;

i=i+k;

end

end

主程序(main.m)

clc

clearall

%warningoff

img=imread('lena.bmp');

subplot(321);imshow(img);title('原图(256x256)')

k=2;

n=7;

newimg1=chouyang(img,k,n);

subplot(322);imshow(newimg1);title('k=2,n=7');

k=4;

n=7;

newimg2=chouyang(img,k,n);

subplot(323);imshow(newimg2);title('k=4,n=7');

k=4;

n=7;

newimg3=chouyang(img,k,n);

subplot(324);imshow(newimg3);title('k=6,n=7');

k=6;

n=7;

newimg4=chouyang(img,k,n);

subplot(325);imshow(newimg4);title('k=8,n=7');

k=8;

n=7;

newimg5=chouyang(img,k,n);

subplot(326);imshow(newimg5);title('k=8,n=4');

四:

实验结果

五:

实验心得

通过该实验,学习了如何用matlab读取图像并对图样抽样处理,了解了matlab数字图像处理的基本使用及方法

实验二图像灰度级修正

一:

实验目的:

掌握常用的图像灰度级修正方法,即图象的灰度变换法和直方图均衡化法,加深对灰度直方图的理解。

观察图象的增强效果,对灰度级修正前后的图像加以比较。

二:

实验内容:

编程实现图像的灰度变换。

改变图像输入、输出映射的灰度参数范围(拉伸和反比),观看图像处理结果。

对图像直方图均衡化处理,显示均衡前后的直方图和图像。

三:

实验程序:

(1)functionnewimg=GrayEqualize(img)

%功能:

直方图均衡

%首先对原图像数据进行直方图统计,然后计算每一个k所对应的s值,求出直方图均衡

%化的变换表s(k),最后以原图像灰度值k作为地址,对每一像素进行变换,得出均衡化后

%的新图像存放在newbuf中。

%clc

%clearall

%img=imread('lena.bmp');

[m,n]=size(img);

GP=zeros(1,256);

fork=0:

255

GP(k+1)=length(find(img==k))/(m*n);

end

Sk=zeros(1,256);

fori=1:

256

forj=1:

i

Sk(i)=GP(j)+Sk(i);%计算Sk

end

end

Sk=round(Sk*255);%将Sk归到相近级的灰度

newimg=zeros(m,n);

fori=0:

255

newimg(find(img==i))=Sk(i+1);

end

newimg=uint8(newimg);

(2)functionnewimg=GrayGamma(img,r)

%功能:

伽马校正

%使用imadjust()进行伽马校正。

imadjust()函数的输入、输出灰度范围用空矩阵代

%替,那么这两个范围就会使用缺省值[0,1],这就意味着imadjust()函数不会改变图像

%的灰度范围,从而更好地观察r校正的效果。

m=size(img,1);

n=size(img,2);

c=1;

img=double(img)/255;

newimg=zeros(m,n);

fori=1:

m

forj=1:

n

newimg(i,j)=c*img(i,j)^r;

end

end

newimg=uint8(newimg*255);

End

(3)functionnewimg=GrayTransfrom(img,a,b,c,d)

%该函数可以任意指定输入图像需要映射的灰度范围和

%指定输出图像所在的灰度范围。

%[a;b]=stretchlim(img);

newimg=imadjust(img,[a;b],[c;d]);

%******************************************************

%灰度范围的线性变换

%m=size(img,1);

%n=size(img,2);

%fxy=double(img)/255;

%gxy=zeros(m,n);

%fori=1:

m

%forj=1:

n

%iffxy(i,j)

%gxy(i,j)=c;

%elseiffxy(i,j)>b

%gxy(i,j)=d;

%end

%gxy(i,j)=(d-c)/(b-a)*(fxy(i,j)-a)+c;

%end

%end

%end

%newimg=uint8(gxy*255);

%****************************************************

end

主程序:

clc

clearall

img0=imread('lena.bmp');

figure

(1)

subplot(211),imshow(img0),title('原灰度图(256x256)')

subplot(212),imhist(img0),title('直方图')

a=0.1;b=0.8

c=0;d=1;

img1=GrayTransfrom(img0,a,b,c,d);

figure

(2)

subplot(211),imshow(img1),title('灰度范围的线性变换')

subplot(212),imhist(img1),title('直方图')

gamma=2;

img2=GrayGamma(img0,gamma);

figure(3);imshow(img2);title('伽马为2校正后')

img3=GrayEqualize(img0);

figure(4);

subplot(211),imshow(img3);title('直方图均衡化后')

subplot(212),imhist(img3);title('直方图')

四:

实验结果:

五:

实验心得

本次实验是对图像处理的深入学习,实验中我们通过直方图伽玛校正对图像进行灰度级修正,均衡化后图比较模糊但是亮度饱和,伽玛校正后更清晰,对比更高

实验三图像的平滑滤波

一:

实验目的:

学习如何对已被噪声污染的图像进行“净化”。

通过平滑处理,对结果图像加以比较,得出自己的实验结论。

二:

实验内容:

编写并调试窗口尺寸为m×m的平滑滤波函数。

编写并调试窗口尺寸为m×m的中值滤波函数。

三:

实验程序:

(1)functionnewimg=AverageFilter(img,m,hi)

%该函数实现的功能为:

用m×m的滤波器模板对oldbuf数组的噪声图像进行线性

%滤波,即用窗口内m×m个像素的平均灰度值来代替图像每个像素点的值,最后结

%果存放在newbuf数组中。

h1=ones(3,3)/9;

h2=[1/101/101/10;

1/101/51/10;

1/101/101/10];

h3=[1/161/81/16;

1/81/41/8;

1/161/81/16];

switch(hi)

case1

h=h1;

case2

h=h2;

case3

h=h3;

otherwise

disp('错误:

hi只能为1,2,3')

end

[M,N]=size(img);

newimg=zeros(M,N);

img=[zeros((m-1)/2,N+(m-1));zeros(M,(m-1)/2),img,zeros(M,(m-1)/2);

zeros((m-1)/2,N+(m-1))];%补零

fori=1:

M

forj=1:

N

buf=img(i:

i+(m-1),j:

j+(m-1)).*h;

newimg(i,j)=sum(buf(:

));

end

end

(2)functionnewimg=MedianFilter(img,m)

%函数的功能为:

把oldbuf数组m×m窗口内的象素值赋给winbuf,然后调用排

%队函数SeekMid(),把该函数在窗口中找到的中值放到newbuf数组中。

[M,N]=size(img);

img=[zeros((m-1)/2,N+(m-1));zeros(M,(m-1)/2),img,zeros(M,(m-1)/2);

zeros((m-1)/2,N+(m-1))];

new=zeros(M,N);

fori=1:

M

forj=1:

N

buf=img(i:

i+(m-1),j:

j+(m-1));

new(i,j)=SeekMid(buf,m);

end

end

newimg=uint8(new);

end

(3)functionmid=SeekMid(winbuf,m)

%winbuf=[312;4622;897];

%m=3;

a=sort(winbuf(:

));%升序排序

mid=a((m^2+1)/2);%取中值

end

主程序:

clc

clearall

im0=imread('lena.bmp');

im0=imnoise(im0,'gaussian',0,0.001);%添加高斯噪声,均值为0,方差为0.001

figure

(1);imshow(im0);title('受高斯噪声污染的原灰度图')

im=double(im0);

im1=AverageFilter(im,3,1);

figure

(2);imshow(im1);title('平滑线性滤波h1');

im2=AverageFilter(im,3,2);

figure(3);imshow(im2);title('平滑线性滤波h2');

im3=AverageFilter(im,3,3);

figure(4);imshow(im3);title('平滑线性滤波h3');

im4=MedianFilter(im,3);

figure(5);imshow(im4);title('中值滤波');

实验结果:

这个实验是上个实验的后续步骤,通过实验一我掌握了一副图像数字化的步骤,通过实验二掌握了对一副图像进行灰度变换的方法和步骤。

本次实验所做的是图像的平滑滤波,涉及到的函数有:

imnoise、imfilter。

 

Imnoise函数为Matlab中添加噪声的函数,我在程序中使用的噪声类型为:

gaussian(高斯噪声)。

Imfilter函数为Matlab中的滤波器函数

四:

实验结果

实验四图像的锐化处理

一:

实验目的:

学习如何用锐化处理技术来加强图像的目标边界和图像细节,对图像进行梯度算子、拉普拉斯算子、Sobel算子设计,使图像的某些特征(如边缘、轮廓等)得以进一步的增强及突出。

锐化处理技术可以在空间域中进行,也可以在频域中运用高通滤波技术进行处理。

二:

实验内容:

编写Robert梯度滤波函数。

编写Sobel算子滤波函数。

编写拉普拉斯边缘增强滤波函数。

观察频域中用高低通滤波技术对图像进行的平滑和锐化处理。

三:

实验程序:

(1)functionnewimg=ILPFilter(img,D0)

%功能:

对图像进行理想低通滤波处理,D0为截止频率

[M,N]=size(img);

P=2*M;Q=2*N;

img(P,Q)=0;%补零

I=fft2(img);

I=fftshift(I);%中心化

fori=1:

P

forj=1:

Q

d=sqrt((i-P/2)^2+(j-Q/2)^2);

ifd<=D0

H=1;

else

H=0;

end

I(i,j)=I(i,j)*H;

end

end

I=ifftshift(I);

I=ifft2(I);

newimg=uint8(real(I(1:

M,1:

N)));

end

(2)functionnewimg=LapFilter(img)

%该函数实现的功能为:

用拉普拉斯算子对图像进行边缘增强滤波,最后结果存

%放在newimg数组中。

%clc

%clearall

%img=imread('lena.bmp');

%figure

(1),imshow(img),title('原灰度图');

%img=double(img);

[M,N]=size(img);

m=3;

img=[zeros((m-1)/2,N+(m-1));zeros(M,(m-1)/2),img,zeros(M,(m-1)/2);

zeros((m-1)/2,N+(m-1))];%补零

%img=uint8(img);

%figure

(2),imshow(img)

newimg=zeros(M,N);

fori=1:

M

forj=1:

N

buf=img(i,j+1)+img(i+1,j)+img(i+2,j+1)+img(i+1,j+2);

newimg(i,j)=4*img(i+1,j+1)-abs(buf);

end

end

newimg=uint8(newimg);

%figure

(2),imshow(newimg),title('Laplace')

end

(3)functionnewimg=RobFilter(img)

%该函数实现的功能为:

用Robert梯度算法对图像进行锐化处理,最后结果存放

%在newimg数组中。

[M,N]=size(img);

img=[img,zeros(M,1);zeros(1,N+1)];

newimg=zeros(M,N);

fori=1:

M

forj=1:

N

newimg(i,j)=abs(img(i,j)-img(i+1,j+1))+abs(img(i+1,j)-img(i,j+1));

end

end

newimg=uint8(newimg);

end

(4)functionnewimg=SobFilter(img)

%该函数实现的功能为:

用Sobel算子对图像进行锐化滤波,

%最后结果存放在newimg数组中。

%clc

%clearall

%im0=imread('lena.bmp');

%figure

(1),imshow(im0),title('原灰度图');

%img=double(im0);

[M,N]=size(img);

newimg=zeros(M,N);

sx=[-1-2-1;000;121];

sy=[-101;-202;-101];

m=3;

img=[zeros((m-1)/2,N+(m-1));zeros(M,(m-1)/2),img,zeros(M,(m-1)/2);

zeros((m-1)/2,N+(m-1))];%补零

fori=1:

M

forj=1:

N

gx=img(i:

i+(m-1),j:

j+(m-1)).*sx;

gy=img(i:

i+(m-1),j:

j+(m-1)).*sy;

newimg(i,j)=abs(sum(gx(:

)))+abs(sum(gy(:

)));

end

end

newimg=uint8(newimg);

%figure

(2),imshow(newimg)

end

主程序:

clc

clearall

im0=imread('lena.bmp');

figure

(1),imshow(im0),title('原灰度图');

im0=double(im0);

im1=RobFilter(im0);

figure

(2),imshow(im1),title('Robert梯度滤波');

im2=SobFilter(im0);

figure(3),imshow(im2),title('Sobel算子滤波');

im3=LapFilter(im0);

figure(4),imshow(im3),title('拉普拉斯边缘增强');

im4=ILPFilter(im0,100);%理想低通滤波

figure(5),imshow(im4),title('频域法滤波');

四:

实验结果:

本次实验着重图像的边缘处理,其中涉及的函数有:

edge、imfilter。

 

Edge函数为Matlab中的边缘检测函数,其用法为:

BW = edge(I) 采用I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1。

Imfilter函数为滤波器函数,用法上次实验已经叙述过。

 

因为Edge函数的输入需要是一个灰度图像或者二值图像,所以先通过Rgb转灰度函数,将图像变为灰度图像,然后通过“Roberts”,“Sobel”算法对图像进行边缘检测,从实验结果的图像中可以看出,Sobel算子在检测丰富信息的图像时,效果更佳。

而在拉普拉斯变换前,给定好了一个模板,进行滤波后能看出,图像的边缘已经更加突出,达到了实验预期的效果

实验五图像的伪彩色处理

一:

实验目的:

学习和掌握伪彩色处理基本方法,将灰度图像转换为多种颜色的彩色图像。

根据图像特点,了解伪彩色处理技术在实际中的应用。

二:

实验内容:

编写密度分割函数,实现灰度图像的伪彩色显示。

编写灰度级彩色变换函数,实现灰度图像的伪彩色显示。

三:

实验程序:

(1)functionnewimg=GrayColor(img)

%该函数实现的功能为:

按密度分割对灰度图像进行伪彩

%色图像处理,最后结果存放在newimg数组中。

[M,N]=size(img);

newimg=zeros(M,N,3);

fori=1:

M

forj=1:

N

ifimg(i,j)<64

newimg(i,j,1)=255;

newimg(i,j,2)=255;

newimg(i,j,3)=0;

elseifimg(i,j)>=64&&img(i,j)<128

newimg(i,j,1)=0;

newimg(i,j,2)=255;

newimg(i,j,3)=255;

elseifimg(i,j)>=128&&img(i,j)<192

newimg(i,j,1)=255;

newimg(i,j,2)=0;

newimg(i,j,3)=255;

elseifimg(i,j)>=192

newimg(i,j,1)=255;

newimg(i,j,2)=0;

newimg(i,j,3)=0;

end

end

end

end

end

end

newimg=uint8(newimg);

end

(2)functionnewimg=GrayColor2(img)

%功能:

灰度级彩色变换

[M,N]=size(img);

newimg=zeros(M,N,3);

fori=1:

M

forj=1:

N

ifimg(i,j)<64

newimg(i,j,1)=0;

newimg(i,j,2)=img(i,j)*4;

newimg(i,j,3)=255;

elseifimg(i,j)>=64&&img(i,j)<128

newimg(i,j,1)=0;

newimg(i,j,2)=255;

newimg(i,j,3)=(img(i,j)-64)/4;

elseifimg(i,j)>=128&&img(i,j)<192

newimg(i,j,1)=(img(i,j)-128)*4;

newimg(i,j,2)=0;

newimg(i,j,3)=0;

elseifimg(i,j)>=192

newimg(i,j,1)=255;

newimg(i,j,2)=(img(i,j)-192)/4;

newimg(i,j,3)=0;

end

end

end

end

end

end

newimg=uint8(newimg);

end

主程序:

clc

clearall

im0=imread('lena.bmp');

figure

(1),imshow(im0),title('原灰度图');

im0=double(im0);

im1=GrayColor(im0);

figure

(2),imshow(im1),title('多灰度伪彩色分割');

im2=GrayColor2(im0);

figure(3),imshow(im2),title('灰度级彩色变换');

四:

实验结果

 

实验六图像的几何变化

一:

实验目的:

学习和掌握图像几何空间变换和灰度插值的基本方法,对图像进行相应的几何变换操作。

二;实验内容:

编程实现图像的比例缩放。

编程实现图像任意角度的旋转变换。

分别用MATLAB函数提供的三种插值方法实现图像的缩放和旋转。

三:

实验程序:

(1)functionnewimg=GeoRotate(img,theta)

%该函数实现的功能为:

移动滑动条改变图像的旋转角度,对图像进行旋转变换,

%最后结果存放在newimg数组中,theta为旋转角度。

[M,N]=size(img);

i0=round(M/2);j0=round(N/2);

theta=theta/180*pi;

T=[cos(theta)sin(theta)0;-sin(theta)cos(theta)0;001];%旋转矩阵

b=zeros(M,N,2);

for

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

当前位置:首页 > 人文社科 > 文化宗教

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

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