数字图像采集与处理作业

更新时间:2024-01-04 01:00:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1. 用Matlab语言完成如下实验:

1) 打开一个BMP文件

2) 将其局部区域的灰度值进行改变 3) 另存为一个新的BMP文件

pic1=imread('get.bmp'); [m,n]=size(pic1); f=pic1(50:300,50:300);

pic2=imadjust(f,[0.5 0.75],[]); pic3=pic1;

pic3(50:300,50:300)=pic2; imshow(pic1),figure,imshow(pic3)

(1)原图像

(2)局部灰度改变后的图像

2. Matlab编程实现图像傅里叶高通、低通滤波,给出算法原理及实现结果。

原图像

(1) 高通滤波

I=imread('get.bmp'); I=rgb2gray(I); figure(1),imshow(I); title('原图像'); s=fftshift(fft2(I)); [a,b]=size(s); a0=round(a/2); b0=round(b/2); d=10; p=0.2;q=0.5; for i=1:a for j=1:b

distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=0; else h=1; end;

s(i,j)=(p+q*h)*s(i,j); end; end;

s=uint8(real(ifft2(ifftshift(s)))); figure(2);

imshow(s);title('高通滤波所得图像');

(2) 低通滤波

I=imread('get.bmp'); I=rgb2gray(I); figure(1),imshow(I); title('原图像'); s=fftshift(fft2(I)); [a,b]=size(s); a0=round(a/2); b0=round(b/2); d=10; for i=1:a for j=1:b

distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=1; else h=0; end;

s(i,j)=h*s(i,j); end; end;

s=uint8(real(ifft2(ifftshift(s)))); figure(2); imshow(s);

title('低通滤波所得图像');

3. 找一幅曝光不足的灰度(或彩色)图像,用Matlab按照直方图均衡化的方法进行处理。

clear all

%一,图像的预处理,读入彩色图像将其灰度化

PS=imread('get.BMP'); %读入BMP彩色图像文件 imshow(PS) %显示出来 figure NO 1 title('输入的彩色BMP图像')

imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩色图片灰度化并保存 PS=rgb2gray(PS); %灰度化后的数据存入数组

figure,imshow(PS) %显示灰度化后的图像,也是均衡化前的样品figure NO 2 title('灰度化后的图像') %二,绘制直方图

[m,n]=size(PS); %测量图像尺寸参数

GP=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255

GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置 end

figure,bar(0:255,GP,'g') %绘制直方图 figure NO 3 title('原图像直方图') xlabel('灰度值') ylabel('出现概率') %三,直方图均衡化 S1=zeros(1,256); for i=1:256 for j=1:i

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

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

for i=1:256

GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率 figure,bar(0:255,GPeq,'b') %显示均衡化后的直方图 figure NO 4 title('均衡化后的直方图') xlabel('灰度值') ylabel('出现概率')

figure,plot(0:255,S2,'r') %显示灰度变化曲线 figure NO 5 legend('灰度变化曲线') xlabel('原图像灰度级') ylabel('均衡化后灰度级') %四,图像均衡化 PA=PS; for i=0:255

PA(find(PS==i))=S2(i+1); %将各个像素归一化后的灰度值赋给这个像素 end

figure,imshow(PA) %显示均衡化后的图像 figure NO 6 title('均衡化后图像') imwrite(PA,'PicEqual.bmp');

(1) 输入的彩色BMP图像

(2) 均衡化后的BMP图像

4. 用Matlab打开一幅图像,添加椒盐、高斯噪声,然后使用邻域平均法、中值滤波法进

行平滑。(4种结果,比较哪种方法适合滤除哪种噪声) (1) 添加椒盐噪声的图像

(2) 采用邻域平均法处理

I0=imread('get.bmp'); I=rgb2gray(I0);

J=imnoise(I,'salt & pepper',0.02); K1=filter2(fspecial('average',7),J); K2=filter2(fspecial('average',9),J); figure,imshow(uint8(K1));title('7x7');

(3) 采用中值滤波法处理

I0=imread('get.bmp'); I=rgb2gray(I0)

J=imnoise(I,'salt & pepper',0.02); K=medfilt2(J,[7 7]);

figure,imshow(K);title('7x7');

(4) 添加高斯噪声的图像

(5) 采用邻域平均法处理

I0=imread('get.bmp'); I=rgb2gray(I0);

J=imnoise(I,'gaussian',0,0.02) K=filter2(fspecial('average',7),J); figure,imshow(uint8(K));title('7x7');

(6) 采用中值滤波法处理后的图像

I0=imread('get.bmp'); I=rgb2gray(I0)

J=imnoise(I,'gaussian',0.02); K=medfilt2(J,[7 7]);

figure,imshow(K);title('7x7');

对含有同一种噪声类型的不同图像采用2种滤波方法进行分析可知:原始图像经过邻域

平均法滤波处理后,噪声得到了抑制,但也使图像边缘变得模糊;中值滤波方法运算简单,易于实现,能较好地保护图像边界,但有时会失掉图像中的细线和小块的目标区域。对含有不同噪声类型的同一图像采用这2种滤波方法进行处理后,分析可知:邻域平均滤波方法对高斯噪声有较强的抑制效果,对椒盐噪声抑制效果不明显;中值滤波方法对高斯噪声的抑制效果不明显,对去除椒盐噪声效果明显。

5. 用Matlab打开一幅图像,利用Roberts梯度法、Sobel算子和拉普拉斯算子进行锐化,并比较结果。

(1) Roberts梯度法

I=imread('get.bmp'); [H,W]=size(I); M=double(I); J=M; for i=1:H-1 for j=1:W-1

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

figure ;imshow(I);title('原图');

figure ;imshow(uint8(J));title('Roberts处理后');

(2) Sobel算子

I=imread('get.bmp'); [H,W]=size(I); M=double(I); J=M; for i=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;

figure ;imshow(I);title('原图');

figure ;imshow(uint8(J));title('Sobel 处理后');

(3) 拉普拉斯算子

I=imread('get.bmp'); [H,W]=size(I); M=double(I);

J=M; for i=2:H-1 for j=2:W-1

J(i,j)=4*M(i,j)-[M(i+1,j)+M(i-1,j)+M(i,j+1)+M(i,j-1)]; end; end;

figure ;imshow(I);title('原图');

figure ;imshow(uint8(J));title('锐化处理后的图');

锐化的实质是:锐化图像g(m,n) = 原图像f(m,n) + 加重的边缘(α*微分)由实验效果对比图可以看出Sobel算子处理图像后使边缘有一定的模糊。Laplacian检测模板的特点是各向同性,对孤立点及线端的检测效果好,但边缘方向信息丢失,对噪声敏感,整体检测效果不如Roberts梯度算子。

J=M; for i=2:H-1 for j=2:W-1

J(i,j)=4*M(i,j)-[M(i+1,j)+M(i-1,j)+M(i,j+1)+M(i,j-1)]; end; end;

figure ;imshow(I);title('原图');

figure ;imshow(uint8(J));title('锐化处理后的图');

锐化的实质是:锐化图像g(m,n) = 原图像f(m,n) + 加重的边缘(α*微分)由实验效果对比图可以看出Sobel算子处理图像后使边缘有一定的模糊。Laplacian检测模板的特点是各向同性,对孤立点及线端的检测效果好,但边缘方向信息丢失,对噪声敏感,整体检测效果不如Roberts梯度算子。

本文来源:https://www.bwwdw.com/article/88wx.html

Top