数字图像处理MATLAB指令18页文档资料.docx

上传人:b****7 文档编号:9810113 上传时间:2023-02-06 格式:DOCX 页数:16 大小:205.14KB
下载 相关 举报
数字图像处理MATLAB指令18页文档资料.docx_第1页
第1页 / 共16页
数字图像处理MATLAB指令18页文档资料.docx_第2页
第2页 / 共16页
数字图像处理MATLAB指令18页文档资料.docx_第3页
第3页 / 共16页
数字图像处理MATLAB指令18页文档资料.docx_第4页
第4页 / 共16页
数字图像处理MATLAB指令18页文档资料.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数字图像处理MATLAB指令18页文档资料.docx

《数字图像处理MATLAB指令18页文档资料.docx》由会员分享,可在线阅读,更多相关《数字图像处理MATLAB指令18页文档资料.docx(16页珍藏版)》请在冰豆网上搜索。

数字图像处理MATLAB指令18页文档资料.docx

数字图像处理MATLAB指令18页文档资料

其他常用的图像转换函数有:

gray2ind函数,将灰度图像转换成索引图像。

Im2bw函数,将其它图像转化为二值图像。

Ind2gray函数,将索引图像转换成灰度图像。

Rgb2gray函数,将彩色图像转换成灰度图像。

1.利用imread()函数读取一幅图像,存入一个数组中;

2.利用whos命令提取该读入图像flower.tif的基本信息;

3.利用imshow()函数来显示这幅图像;

函数执行语句

A=imread('saturn.png');

whos

NameSizeBytesClassAttributes

A1500x1200x35400000uint8

imshow(A)

4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;

imfinfo('saturn.png')

5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:

imwrite(原图像,新图像,‘quality’,q),q取0-100。

imwrite(A,'xingxing.jpg','quality',25)

B=imread('xingxing.jpg');

6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。

imwrite(A,'xingxing.bmp')

C=imread('xingxing.bmp');

7.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。

F=imread('circbw.tif');

im2bw(F)

imshow(F)

实验二图像直方图与灰度变换

下面给出灰度变化的MATLAB程序

f=imread('medicine_pic.jpg');

g=imhist(f,256);%显示其直方图

g1=imadjust(f,[01],[10]);%灰度转换,实现明暗转换(负片图像)

figure,imshow(g1)

g2=imadjust(f,[0.50.75],[01]);%将0.5到0.75的灰度级扩展到范围[01]

figure,imshow(g2)

g=imread('point.jpg');

h=log(1+double(g));%对输入图像对数映射变换

h=mat2gray(h);%将矩阵h转换为灰度图片

h=im2uint8(h);%将灰度图转换为8位图

figure,imshow(h)

下面给出直方图均衡化增强图像对比度的MATLAB程序:

I=imread(‘pollen.jpg);%读入原图像

J=histeq(I);%对原图像进行直方图均衡化处理

Imshow(I);%显示原图像

Title(‘原图像’);%给原图像加标题名

Figure;imshow(J);%显示直方图均衡化后的图像

Title(‘直方图均衡化后的图像’);%给直方图均衡化后的图像加标题名

Figure;subplot(1,2,1);%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图的第1幅图

Imhist(I,64);%将原图像直方图显示为64级灰度

Title(‘原图像直方图’);%给原图像直方图加标题名

Subplot(1,2,2);%作第2幅子图

Imhist(J,64);%将均衡化后图像的直方图显示为64级灰度

Title(‘均衡变换后的直方图’);%给均衡化后图像直方图加标题名

1、利用自己编写的灰度直方图计算程序计算rice.tif图像的直方图,并与系统自带的计算程序进行对比。

A=imread('rice.png');

subplot(1,3,1);

imshow(A)

title('lady-rice');

[m,n]=size(A);

e=zeros(1,256);

fork=0:

255

fori=1:

m

forj=1:

n

ifA(i,j)==k

e(k+1)=e(k+1)+1;

end

end

end

end

subplot(1,3,2);

bar(e);

subplot(1,3,3);

imhist(A,256);

2.进行灰度直方图的均衡化。

I=imread('cameraman.tif');

J=histeq(I);

figure;

imshow(I);

title('原图像');

figure;

imshow(J);

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

figure;

Imhist(J,64);

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

3、利用直接灰度变换法对图像进行灰度变换

f=imread('rice.png');

figure;

imshow(f);

title('原始图像');

figure;

imhist(f,256);

title('原始图像直方图');

f1=imadjust(f,[01],[10]);%灰度转换,实现明暗转换(负片图像)

figure;

imshow(f1);

title('明暗转换后的图像');

figure;

imhist(f1,256);

title('明暗转换直方图');

f2=imadjust(f,[0.50.75],[01]);%将0.5到0.75的灰度级扩展到范围[01]

figure;

imshow(f2);

title('0.5到0.75的灰度级扩展到范围[01]的图像');

figure;

imhist(f2,256);

title('灰度级扩展直方图');

实验三图像的算术运算与空间域增强

使用与图像算数运算的MATLAB程序

f1=imread('picture.jpg');%读入图像1

f2=imread('picture1.jpg');%读入图像2

I=imsubtract(f1,f2);%两幅图像相减,结果得出两幅图像的不同之处

figure,imshow(I)

利用MATLAB软件实现空域滤波的程序:

I=imread('electric.tif');

J=imnoise(I,'gauss',0.02);%添加高斯噪声

%J=imnoise(I,'salt&pepper',0.02);%添加椒盐噪声

ave1=fspecial('average',3);%产生3×3的均值模版

ave2=fspecial('average',5);%产生5×5的均值模版

K=filter2(ave1,J)/255;%均值滤波3×3

L=filter2(ave2,J)/255;%均值滤波5×5

M=medfilt2(J,[33]);%中值滤波3×3模板

N=medfilt2(J,[55]);%中值滤波5×5模板

imshow(I);

figure,imshow(J);

figure,imshow(K);

figure,imshow(L);

figure,imshow(M);

figure,imshow(N);

1.调入并显示摄像头生成的二幅的图像。

obj=videoinput('winvideo',1,'YUY2_640x480');%创建视频输入对象

preview(obj);%´打开视频预览窗口

frame1=getsnapshot(obj);%获取视频的一帧(注该帧并不是RGB格式)

figure,imshow(frame1);%显示获取的那帧图像

frame=ycbcr2rgb(frame1);%图像格式转换

figure,imshow(frame);%显示图像

imwrite(frame,1.jpg','jpg');

frame1=getsnapshot(obj);

figure,imshow(frame1);

frame=ycbcr2rgb(frame1);

figure,imshow(frame);

imwrite(frame,2.jpg','jpg');

2.考虑使用适当的图像算术运算方法,找出二幅图像中不同的地方及其所处的位置;

f1=imread(1.jpg');

f2=imread(2.jpg');

I=imsubtract(f1,f2);

figure,imshow(I)

3.显示/记录处理结果并做出报告。

a)调入并显示原始图像Sample2-1.jpg。

A=imread('huangs.jpg');

C=rgb2gray(A);

figure,imshow(C);

b)利用imnoise命令在图像Sample2-1.jpg上加入高斯(gaussian)噪声

B=imnoise(C,'gauss',0.1);

figure,imshow(B);

title('加噪后');

c)利用预定义函数fspecial命令产生平均(average)滤波器

d=(1/17).*[111;191;111];

Y=filter2(d,B)/255;

figure,imshow(Y,[]);

title('均值去噪后');

d)采用3x3的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;

M=medfilt2(B,[3,3]);

figure,imshow(M);

title('中值去噪后');%中值滤波3×3模板

e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。

ave2=fspecial('average',5);%产生5×5的均值模版

L=filter2(ave2,B)/255;%均值滤波5×5;

%Y=filter2(d,B)/255;

figure,imshow(L,[]);

M=medfilt2(B,[5,5]);

figure,imshow(M);

title('中值去噪后');%中值滤波5*5模板

f)利用imnoise命令在图像Sample2-1.jpg上加入椒盐噪声(salt&pepper)

g)重复c)~e)的步骤

h)输出全部结果并进行讨论。

A=imread('huangs.jpg');

C=rgb2gray(A);

subplot(3,2,1);

imshow(C);

B=imnoise(C,'salt&pepper',0.02);

subplot(3,2,2);

imshow(B);

title('加噪后');

d=fspecial('average',3);

M=medfilt2(B,[3,3]);

subplot(3,2,3);

imshow(M);

title('中值去噪后[3,3]');

N=medfilt2(B,[5,5]);

subplot(3,2,4);

imshow(N);

title('中值去噪后[5,5]');

Y=filter2(d,B)/255;

subplot(3,2,5);

imshow(Y,[]);

title('均值去噪后[3,3]');

ave2=fspecial('average',5);%产生5×5的均值模版

L=filter2(ave2,B)/255;%均值滤波5×5;

subplot(3,2,6);

imshow(L,[]);

title('均值去噪后[5,5]');

实验四图像的傅立叶变换与频域滤波

利用MATLAB软件实现数字图像傅立叶变换的程序:

I=imread(‘原图像名.gif’);%读入原图像文件

imshow(I);%显示原图像

fftI=fft2(I);%二维离散傅立叶变换

sfftI=fftshift(fftI);%直流分量移到频谱中心

RR=real(sfftI);%取傅立叶变换的实部

II=imag(sfftI);%取傅立叶变换的虚部

A=sqrt(RR.^2+II.^2);%计算频谱幅值

A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;

%归一化

figure;%设定窗口

imshow(A);%显示原图像的频谱

利用MATLAB实现频域滤波的程序

f=imread('room.tif');

F=fft2(f);%对图像进行傅立叶变换

S=fftshift(log(1+abs(F)));%对变换后图像进行队数变化,并对其坐标平移,使其中心化

S=gscale(S);%将频谱图像标度在0-256的范围内

imshow(S)%显示频谱图像

h=special('sobel');%产生空间‘sobel’模版

freqz2(h)%查看相应频域滤波器的图像

PQ=paddedsize(size(f));%产生滤波时所需大小的矩阵

H=freqz2(h,PQ

(1),PQ

(2));%产生频域中的‘sobel’滤波器

H1=ifftshift(H);%重排数据序列,使得原点位于频率矩阵的左上角

imshow(abs(H),[])%以图形形式显示滤波器

figure,imshow(abs(H1),[])

gs=imfilter(double(f),h);%用模版h进行空域滤波

gf=dftfilt(f,H1);%用滤波器对图像进行频域滤波

figure,imshow(gs,[])

figure,imshow(gf,[])

figure,imshow(abs(gs),[])

figure,imshow(abs(gf),[])

f=imread('number.tif');%读取图片

PQ=paddedsize(size(f));%产生滤波时所需大小的矩阵

D0=0.05*PQ

(1);%设定高斯高通滤波器的阈值

H=hpfilter('gaussian',PQ

(1),PQ

(2),D0);%产生高斯高通滤波器

g=dftfilt(f,H);%对图像进行滤波

figure,imshow(f)%显示原图像

figure,imshow(g,[])%显示滤波后图像

一、实验步骤

1.生成如下图所示的一个二维矩形信号。

H=zeros(256,256);

H(63:

192,63:

192)=1;

figure;imshow(H);

title('lvboqi');

lvboqi

2.利用一维FFT计算二维付里叶变换。

分别显示行计算结果和列变换结果。

(立体结果,用mesh(F)显示)

I=imread('cameraname.bmp');

figure;imshow(I);

title('原图像');

F1=fft2(I);

C1=ifft2(F1);

figure;imshow(log(1+abs(C1)),[]);

title('2滤波后图像');

figure;mesh(C1);

F2=fft(I);

F3=fft(F2')';

C3=ifft(F3')';

C2=ifft(C3);

figure;imshow(log(1+abs(C2)),[]);

title('1/1滤波后图像');

figure;mesh(log(1+abs(C2)));

1/1滤波后图像

3利用MatLab工具箱中的函数编制FFT频谱显示的函数;

4a).调入、显示“实验一”获得的图像;图像存储格式应为“.gif”;

b)对这三幅图像做FFT并利用自编的函数显示其频谱;

c)讨论不同的图像内容与FFT频谱之间的对应关系。

5利用MATLAB提供的低通滤波器实现图像信号的滤波运算,并与空间滤波进行比较。

I=imread('cameraname.bmp');%读入原图像文件

figure;imshow(I);%显示原图像

title('原图像');

[M,N]=size(I);

F=fft2(I);

A=fftshift(F);%直流分量移到频谱中心

%figure;imshow(A);

H=zeros(M,N);

H(63:

192,63:

192)=1;

figure;imshow(H);

title('低通滤波器');

B=A.*H;

C=ifft2(B);

figure;imshow(log(1+abs(C)),[]);

title('滤波后');

滤波后

6利用MATLAB提供的高通滤波器对图像进行处理。

I=imread('cameraname.bmp');

figure;imshow(I);%显示原图像

title('原图像');

J=imnoise(I,'gauss',0.02);%添加高斯噪声

%J=imnoise(I,'salt&pepper',0.02);%添加椒盐噪声

figure;imshow(J);%显示原图像

title('噪声图像');

[M,N]=size(J);

A=fft2(J);

%figure;imshow(A);

H=ones(M,N);

H(63:

192,63:

192)=0;

figure;imshow(H);

title('高通滤波器');

B=A.*H;

C=ifft2(B);

figure;imshow(log(1+abs(C)),[]);

title('滤波后');

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

当前位置:首页 > 外语学习 > 英语考试

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

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