数字图像处理的答案

图片像素的降低与恢复

I=imread('2.jpg' );%读取图片

g=rgb2gray(I);%彩色图像灰度化

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

figure;imshow(g);%显示灰度值图片

%降低图像分辨率

g_down_1=g(1:2:end,1:2:end);%512

g_down_2=g_down_1(1:2:end,1:2:end);%256

g_down_3=g_down_2(1:2:end,1:2:end);%128

g_down_4=g_down_3(1:2:end,1:2:end);%64

g_down_5=g_down_4(1:2:end,1:2:end);%32

figure;imshow(g_down_1);%显示

figure;imshow(g_down_2);%显示

figure;imshow(g_down_3);%显示

figure;imshow(g_down_4);%显示

figure;imshow(g_down_5);%显示

%把降低分辨率的图像恢复原大小

G_up_5_near=imresize(g_down_3,8,'nearest' ); %最近邻法放大

G_up_5_bil=imresize(g_down_5,32,'bilinear' ); %双线性插值法放大 G_up_5_bic=imresize(g_down_5,32,'bicubic' ); %三次内插法放大 figure;imshow(G_up_5_near);%显示

figure;imshow(G_up_5_bil);%显示

figure;imshow(G_up_5_bic);%显示

图像的四则运算和减法运算

clear;clc;%清空变量及工作区

I=imread('11.jpg' );%读取图片

I=rgb2gray(I);%彩色图像灰度化

I2=imread('22.jpg' );%读取图片

I2=rgb2gray(I2);%彩色图像灰度化

K=imlincomb(0.6,I,0.4,I2);%计算两幅图像的线性组合

K=histeq(K);%进行直方图均衡化

imshow(K);

figure;

I1=imread('1.jpg' );

I2=imread('2.jpg' );

I=I1-I2;%图像相减

imshow(I);

histeq (X )函数实现直方图均衡。因为此函数只能对灰度图像进

行直方图均衡。故应先将彩图转为灰度图像

位图显示

clear;clc;

I=imread('aerial.tif'

);

I=double(I);

G_7=bitand(I,128);%求灰度值第七位

I_7=im2uint8(mat2gray(G_7));%转换为无符号八位整型

figure;imshow(I_7);%显示第七位位图

G_6=bitand(I,64);%求灰度值第6位

I_6=im2uint8(mat2gray(G_6));%转换为无符号八位整型

figure;imshow(I_6);%显示第6位位图

G_5=bitand(I,32);

I_5=im2uint8(mat2gray(G_5));

figure;imshow(I_5);

G_4=bitand(I,16);

I_4=im2uint8(mat2gray(G_4));

figure;imshow(I_4);

G_3=bitand(I,8);

I_3=im2uint8(mat2gray(G_3));

figure;imshow(I_3);

G_2=bitand(I,4);

I_2=im2uint8(mat2gray(G_2));

figure;imshow(I_2);

G_1=bitand(I,2);

I_1=im2uint8(mat2gray(G_1));

figure;imshow(I_1);

G_0=bitand(I,1);

I_0=im2uint8(mat2gray(G_0));

figure;imshow(I_0);

I_restore=G_7+G_6+G_5+G_4+G_3+G_2+G_1+G_0;%读取重新储存的图片 figure;imshow(uint8(I_restore));%显示

骨骼图的显示

%读取图像

I=imread('Fig0343(a)(skeleton_orig).tif');

%显示a 图像

A=im2double(I);

subplot(2,4,1);

imshow(A);

title('(a)全身骨骼扫描图像');

%显示b 图像

subplot(2,4,2);

A=double(A);

w1=fspecial('laplacian',0);

B=imfilter(A,w1,'corr','replicate');

imshow(B); %得到拉普拉斯变换后的图像

title('(b)经过拉普拉斯操作后的结果');

%显示c 图像

subplot(2,4,3);

C=A+B; %得到A+B的结果

imshow(C);

title('(c)图a 加图b 得到的锐化图像');

%显示d 图像

subplot(2,4,4);

w1=fspecial('sobel'); %得到水平sobel 模板

w2=w1'; %转置得到竖直sobel 模板

G1=imfilter(A,w1); %水平sobel 梯度

G2=imfilter(A,w2); %竖直sobel 梯度

D=abs(G1)+abs(G2); %sobel梯度

imshow(D);

title('(d)图a 经sobel 梯度处理后的结果');

%显示e 图像

subplot(2,4,5);

e=fspecial('average',5);

E=imfilter(D,e,'corr','replicate');

imshow(E);

title('(e)使用5*5均值滤波器平滑后的sobel 图像');

%显示f 图像

subplot(2,4,6);

C=im2double(C);

E=im2double(E);

F=C.*E; imshow(F);

title('(f)图c 和图e 相乘形成的掩蔽图像');

%显示g 图像

subplot(2,4,7);

G=abs(A)+abs(F);

imshow(G);

title('(g)由图a 和图f 求和得到的锐化后的图像');

%显示h 图像

subplot(2,4,8);

imshow(imadjust(G,[],[],0.5));

title('(h)对图g 应用幂律变换得到的最终结果');

灰度直方图操作

clear;clc;

I=imread('moon.tif' );

figure;imshow(I);

figure;imhist(I); %显示灰度直方图

h=imhist(I,256); %长条图显示,宽度为1,

figure;bar(h);

h_scale=imhist(I,25);

x=linspace(0,255,25);%创建向量

figure;bar(x,h_scale); %长条图显示,宽度为25

I_equ=histeq(I,256); %直方图均衡化

figure;imhist(I_equ);

figure;imshow(I_equ);

figure;bar(imhist(I_equ));

图像锐化梯度算子的应用

clear;clc;

f=imread('building.tif' );

f=im2double(f);

w1=fspecial('sobel' ); %得到水平sobel 模板

w2=w1';%转置得到竖直sobel 模板

g1=imfilter(f,w1,'replicate' ); %横向梯度算子结果

g2=imfilter(f,w2,'replicate' ); %纵向梯度算子结果

g=abs(g1)+abs(g2);%sobel梯度

imshow(f);figure;

imshow(g1);figure;

imshow(g2);figure;

imshow(g);

图像锐化拉普拉斯算子的引用

clear;clc;

f=imread('moon.tif' );

w4=fspecial('laplacian' ,0);%生成拉普拉斯滤波器

w8=[1 1 1;1 -8 1;1 1 1];

f=im2double(f);

g4=f-imfilter(f,w4,'replicate' ); %g4=f-imfilter(f,w4,'symmetric');

g8=f-imfilter(f,w8,'replicate' ); %g8=f-imfilter(f,w8,'symmetric');

[A,B]=find(g4

g4(A(i,1),B(i,1))=0;%令这些元素为0

end

[C,D]=find(g4>1);%找出矩阵中大于一元素所在行和列, 并存在[c,d]中 for i=1:length(C) %从1到length (C )循环

g4(C(i,1),D(i,1))=1;%令这些元素为1

end

figure;imshow(f);

%g4=im2uint8(mat2gray(g4));

%g8=im2uint8(mat2gray(g8));

figure;imshow(imfilter(f,w4,'replicate' ))

figure;imshow(g4);

figure;imshow(imfilter(f,w8,'replicate' ))

figure;imshow(g8);

平滑空间滤波器

clear;clc;

I=imread('pattern.tif' );%读取图像

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

h=fspecial('average' ,[14 14]);%产生均值滤波器模板

g=imfilter(I,h,'replicate' );%滤波

imshow(g);

%阈值分割

I=imread('galaxy.tif' );

h=fspecial('average' ,[15 15]);%产生均值滤波器模板

g=imfilter(I,h,'replicate' );%滤波

level = graythresh(g);%通过计算获得输入图像的阈值

BW = im2bw(g,level);%通过阈值变换法把灰度图像转换成二值图像 imshow(BW);

%中值滤波

I=imread('imnoise.tif' );

g=medfilt2(I,[3 3]);%窗口大小为3×3的中值滤波

%g=medfilt2(I,[3 3],'symmetric');

imshow(g);

%顺序滤波

A=imread('imnoise.tif' );

B=ordfilt2(A,15,true(7),'symmetric');%图像作顺序统计滤波 figure;imshow(A);figure;imshow(B)

图像增强的三种方法

% inverse transformation

I=imread('breast.tif' );

g=im2uint8(mat2gray(I));%图像数据类型转换为无符号八位整型。 g_inver=255-g;%图像反转

figure;imshow(I);

figure;imshow(g_inver);

%log transform

I=imread('fourier.tif' );

g=im2uint8(mat2gray(log(1+double(I))));%对图像进行对数变换 figure;imshow(I);

figure;imshow(g);

% power transform moon.tifaerial.tif

I=imread('aerial.tif' );

g=im2uint8(mat2gray(double(I).^(2)));%对图像进行幂律变换 %g=255-I;

figure;

imshow(I);

figure;

imshow(g);

理想低通滤波器

f=imread('dynamic_range.tif'); 索引形式读入

imshow(f);显示图像

title('Ô-ͼ');

f=im2double(f);按比例的将其缩放至double 类型

F=fftshift(fft2(f));正半轴部分和负半轴部分的图像分别关于各自的中心对称 M=size(F,1);表示维数的第一项

N=size(F,2);表示维数的第二项

u=1:M;u=[1,2,3,4,…M]

v=1:N;v=[1,2,3,4,…N]

[V,U]=meshgrid(v,u);产生两个矩阵,第一个矩阵是由v 作为行向量组成,第二个向量由u 作为列向量组成

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); 计算公式 H=zeros(M,N);产生一个mxn 的全零矩阵

H(D

G=F.*H;进行卷积

G_inv=ifft2(ifftshift(G));进行图像二维离散快速傅里叶变换

figure; 建立图形

imshow(real(G_inv));显示图像

title('Â˲¨ºó');

alpha=sum(abs(F(D

巴特沃斯低通滤波器

f=imread('pattern.tif' ); 索引形式读入

imshow(f);显示图像

%title('Ô-ͼ');

f=im2double(f);按比例的将其缩放至double 类型

F=fftshift(fft2(f));正半轴部分和负半轴部分的图像分别关于各自的中心对称 M=size(F,1);表示维数的第一项

N=size(F,2);表示维数的第二项

u=1:M;u=[1,2,3,4,…M]

v=1:N;v=[1,2,3,4,…N]

[V,U]=meshgrid(v,u);产生两个矩阵,第一个矩阵是由v 作为行向量组成,第二个向量由u 作为列向量组成

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); 计算公式?

H=zeros(M,N);产生一个mxn 的全零矩阵

D0=235;n=2; %2阶

H=1./(1+(D./D0).^(2*n));公式?

G=F.*H; 进行卷积? G_inv=ifft2(ifftshift(G));进行图像二维离散快速傅里叶变换 figure; 建立图形

imshow(real(G_inv));显示图像

%title('Â˲¨ºó')

高斯低通滤波器

clear;clc;

f=imread('broken-text.tif' ); 索引形式读入

imshow(f);显示图像

%title('Ô-ͼ');

f=im2double(f);按比例的将其缩放至double 类型

F=fftshift(fft2(f));正半轴部分和负半轴部分的图像分别关于各自的中心对称 M=size(F,1);表示维数的第一项

N=size(F,2);表示维数的第二项

u=1:M;u=[1,2,3,4,…M]

v=1:N;v=[1,2,3,4,…N]

[V,U]=meshgrid(v,u);产生两个矩阵,第一个矩阵是由v 作为行向量组成,第二个向量由u 作为列向量组成

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2);计算公式?

H=zeros(M,N);产生一个mxn 的全零矩阵

D0=80;

H=exp(-D.^2./(2*D0.^2));公式

G=F.*H;

G_inv=ifft2(ifftshift(G));进行图像二维离散快速傅里叶变换 figure;imshow(real(G_inv));

%title('Â˲¨ºó')

高斯高通滤波器(同上)

clear;clc;

f=imread('chest_xray.tif');

imshow(f);

%title('Ô-ͼ');

f=im2double(f);

F=fftshift(fft2(f));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u);

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); L=zeros(M,N);

D0=2; 截止频率=2

L=exp(-D.^2./(2*D0.^2));

H=1-L;低通变成高通

G=F.*H;

G_inv=ifft2(ifftshift(G));

figure;imshow(real(G_inv),[]);

%title('Â˲¨ºó')

巴特沃斯高通滤波器(同上)

f=imread('thumb_print.tif');

imshow(f);

%title('Ô-ͼ');

f=im2double(f);

F=fftshift(fft2(f));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u);

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); L=zeros(M,N);

D0=25;n=4;截止频率=25 ,设为4阶

L=1./(1+(D./D0).^(2*n));

H=1-L; 低通变成高通

G=F.*H;

G_inv=real(ifft2(ifftshift(G)));

figure;imshow(G_inv);

%title('Â˲¨ºó')

I_thresh=G_inv; %指纹处理

[A,B]=find(I_thresh

[C,D]=find(I_thresh>=0);找出矩阵中I_thresh>=0元素所在行和列, 并存在C,D 中

for i=1:length(A)取i 分别为在1到length(A)的每一个数

I_thresh(A(i,1),B(i,1))=0;令这些元素为0

end

for i=1:length(C)(同上)

I_thresh(C(i,1),D(i,1))=1;令这些元素为1

end

figure;imshow(I_thresh);

clear;clc;

I=zeros(512,512);产生一个512x512的全零矩阵

I(226:286,240:266)=1;

imshow(I);

F=fft2(I);

F_no_shift=abs(F);

F_shift=abs(fftshift(F));

% G_no_shift=log(1+F_no_shift);

G_shift=log(1+F_shift);

%figure;imshow(F_no_shift,[]);

% figure;imshow(G_no_shift,[]);

figure;imshow(F_shift,[]);

figure;imshow(G_shift,[]);

%

% %图像旋转

I2=imrotate(I,45,'bilinear' , 'crop' );

figure;imshow(I2);

F2=fft2(I2);

F2_shift=abs(fftshift(F2));

G2_shift=log(1+F2_shift);

figure;imshow(F2_shift,[]);

figure;imshow(G2_shift,[]);

振铃效应

f=zeros(512,512);

f(128,128)=255;

f(128,384)=255;

f(384,128)=255;

f(384,384)=255;

f(256,256)=255;

figure;imshow(f);

f=im2double(f);

F=fftshift(fft2(f));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u);

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); H=zeros(M,N);

H(D

G=F.*H;

G_inv=ifft2(ifftshift(G));

figure;imshow(real(G_inv),[]);

拉普拉斯滤波器

clear;clc;

f=imread('moon.tif' );

imshow(f);

%title('moon');

f=im2double(f);

F=fftshift(fft2(f));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u);

H=zeros(M,N);

H=-4*pi^2*((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); G=F.*H;

G1=real(ifft2(ifftshift(G)));

figure;imshow(G1,[]);%线性映射0-255

G2=G1-min(G1(:));

G2=G2/max(G2(:));

G3=im2uint8(G2);

%figure;imshow(G3)%G3ÏßÐÔÓ³Éä µÈͬÓÚimshow£¨G1,[]); %title('±ê¶¨ºóµÄͼÏñ');

G2=f-G2;

figure;imshow(G2,[]);

%title('À-ÆÕÀ-˹Ëã×ÓÔöǿͼÏñ');

%空间拉普拉斯算子

w4=fspecial('laplacian' ,0);

sp=imfilter(f,w4);

g4=f-sp;

figure;imshow(sp,[]);

figure;imshow(g4,[]);

第六章

e dge_function clear;clc; %清空命令窗口的所有输入和输出 I=imread('1.jpg' ); %读入wirebond_mask.tif图像

BW_sobel=edge(I,'sobel' ); %图像边缘提取

imshow(BW_sobel); %显示图像

BW_prewitt=edge(I,'prewitt' ); %prewitt图像边缘提取

figure;imshow(BW_prewitt); %产生新的窗口,显示图像 BW_log=edge(I,'log' ); %用log 算子进行边缘检测

figure;imshow(BW_log); %产生新的窗口,显示图像

[BW_cannyth]=edge(I,'canny' ); %canny 算子检测法检测图像边缘 figure;imshow(BW_canny); %产生新的窗口,显示图像

hough_trans

clear;clc; %清空命令窗口的所有输入输出

I=zeros(101,101); %zeros 就是生成一个全0的矩阵

I(1,1)=1;I(101,1)=1; %第1行第1列,元素为1

I(1,101)=1;I(101,101)=1;

I(51,51)=1;

[H,theta,rho]=hough(I);

subplot(1,2,1);imshow(I);

subplot(1,2,2);

imshow(imadjust(mat2gray(H)),'XData' ,theta, 'YData' ,rho, ... 'InitialMagnification' , 'fit' );

line_detection

f=imread('1.jpg' );

imshow(f);

w=[1 1 1;1 -8 1;1 1 1 ];

g=imfilter(f,w,'replicate' );

%imfilter根据指定操作进行多维滤波

figure;imshow(g,[])

figure,imshow(abs(g),[]);

g(g

figure;imshow(g,[]);

T=0.5*max(g(:));

m=g>=T;

figure;imshow(m,[]);

line_direction_detection

f=imread('wirebond_mask.tif');

f=im2double(f);

imshow(f);

w_h=[-1 -1 -1;2 2 2;-1 -1 -1];

w_v=w_h';

w_45=[-1 -1 2;-1 2 -1;2 -1 -1];

w_n45=[2 -1 -1;-1 2 -1;-1 -1 2];

g_h=imfilter(f,w_h,'replicate' );

g_v=imfilter(f,w_v,'replicate' );

g_45=imfilter(f,w_45,'replicate' );

g_n45=imfilter(f,w_n45,'replicate' );

% figure;imshow(g_h,[])

% figure;imshow(g_v,[])

% figure;imshow(g_45,[])

% figure;imshow(g_n45,[])

T_h=0.5*max(g_h(:));

m_h=g_h>=T_h;

figure;imshow(m_h,[]);

T_v=0.5*max(g_v(:));

m_v=g_v>=T_v;

figure;imshow(m_v,[]);

T_45=0.5*max(g_45(:));

m_45=g_45>=T_45;

figure;imshow(m_45,[]);

T_n45=0.5*max(g_n45(:));

m_n45=g_n45>=T_n45;

figure;imshow(m_n45,[]);

smooth_line_detection

clear;clc;

f=imread('building_original.tif');

f=im2double(f);

imshow(f);

h=fspecial('average' ,[5 5]);

f=imfilter(f,h,'replicate' );

wh=fspecial('sobel' );

wv=wh';

gh=abs(imfilter(f,wh,'replicate' ));

gv=abs(imfilter(f,wv,'replicate' ));

figure;imshow(gh);

figure;imshow(gv);

g_all=gh+gv;

Th=0.5*max(gh(:));

mh=gh>=Th;

figure,imshow(mh);

Tv=0.5*max(gv(:));

mv=gv>=Tv;

figure,imshow(mv);

T_all=0.3*max(g_all(:));

m_all=g_all>=T_all;

figure,imshow(m_all);

spot_detection

f=imread('turbine_blade_black_dot.tif');

f=im2double(f);

imshow(f);

w=[1 1 1;1 -8 1;1 1 1 ];

g=imfilter(f,w,'replicate' );

figure;imshow(g,[])

T=0.9*max(g(:));

m=g>=T;

figure,imshow(m);

threshold_seg

I=imread('polymersomes.tif' );

T=graythresh(I);

g=I>=T*255;

figure,imshow(g);

同态滤波器

clear;clc

f=imread('dynamic_range.tif');

figure;imshow(f);

f=im2double(f);

F=fftshift(fft2(log(f+eps)));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u); %meshgrid用于生成网格采样点的函数。 D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); H=zeros(M,N);

D0=2;c=1.5;%1.5;

H=1.5*(1-exp(-c*D.^2./D0.^2))+0.5;

G=F.*H;

G1=ifft2(ifftshift(G));

g=real(exp(G1)); %real,复数的实部数值

% g=mat2gray(g); %mat2gray 实现图像矩阵的归一化操作。 所谓" 归一化" 就是使矩阵的每个元素的值都在0和1之间。该函数在数字图像处理中经常用到。

g_min=min(g(:));

g_cor=g-g_min;

g_cor=g_cor./max(g_cor(:));

%g_cor=histeq(g_cor); %直方图均衡化

figure;imshow(g_cor,[]);

% title('同态滤波图');

%直方图均衡化¯

figure;imshow(histeq(f))

figure;imshow(g_gama,[]);

a=[8,1,6;3,5,7;4,9,2]; b=[1,1,1;1,1,1;1,1,1];

c1=conv2(a,b); %conv2二维卷积运算函数

a(5,5)=0;b(5,5)=0;%扩展矩阵,因为ab 卷积结果是5*5

c2=ifft2(fft2(a).*fft2(b));

function :在MATLAB 中不是它的自带函数就可以完成所有功能,更多的时候是自己编写程序来实现我们要的功能,这时就要用到此命令,调用格式为:function ****( ) 括号外面为函数名称,括号中为函数中要用到的变量。

plot 命令:plot 命令是MATLAB 中用来绘制用向量表示法(在下一章中讲到) 表示的连续信号的波形。它的功能是将向量点用直线依次连接起来。调用格式:plot(k,f),其中k 和f 是向量。 ezplot 命令:ezplot 命令是用来绘制用符号运算表示法表示的连续信号的波形。调用格式:ez plot(f,[t1,t2]),其中[t1,t2]为一时间范围,f 为以t 为变量的函数。

title 命令:在绘图命令中,我们可以用此命令来对绘制出来的波形做一些注释,以便后期我们做图形处理。调用格式为:title(‘ …… ’) 中间部分可以任意对图形进行注释的文字。

xlabel 、ylabel 命令:这两个也是来对绘制出来的波形做标注用的,可以标注出两个坐标轴的未知数的意义,增加图形中的信息量。调用格式:xlabel(‘ …… ’),ylabel(‘ …… ’) 中间可以是对坐标轴做注释的文字或字母。

axis 命令:此命令可以来定义绘制波形中坐标的范围。调用格式为:axis([k1,k2,g1,g2]),其中k1,k2表示横坐标的范围,g1,g2表示纵坐标的范围。

syms 命令:在符号表示法中,可以用此命令来定义变量。调用格式为:syms t 意思是定义一个变量t 。

sym 命令:是符号表示法中的调用系统自带函数的命令。调用格式为:f=sym(‘……’) 中间为系统能识别的常用信号。

stem 命令:此命令专门用来绘制离散序列的波形。调用格式为:stem(k,f) 调用此命令可以绘制出离散序列的点状图。

subs 命令:此可以将连续信号中的时间变量t 用t -t0,at 等等来替换,从而可以完成信号在时域范围内的变换。调用格式为:subs(f,t,t-t0) 通过调用此函数可以把信号做移位,伸展等等变换。

fliplr 命令:此函数用来将向量以零时刻为基准点进行反折。调用格式为:f=fliplr(f1) 这样f 就是向量f1反折后的函数。

min 、max 命令:这两个命令可以用来比较算出一个向量中的最小值和最大值,或者比较得出两个值中的较小值。调用格式为:min(k),max(k),min(k1,k2),max(k1,k2)

length 命令:此函数可以计算出向量的长度。调用格式为:length(f)。

ones 函数:这是MATLAB 中一个常用的函数,它产生元素全部为1的矩阵,本文中用此函数来表示离散阶跃序列,或者定义连续的门信号,调用格式为:n =0:5

;ones(1,n)表示长度为整数n 的阶跃序列。k=1:p:8;ones(1,length(k))表示长度为k 的门信号。

subplot 命令:在MATLAB 绘图过程中,有时候为了便于观测图形的变化,需要在一幅波形显示窗口显示多个信号的波形,这时可以调用subplot 命令。调用格式为:subplot(n1,n2,k),如定义一个subplot(2,2,1),就可以在显示窗口中显示k=2×2个波形。

conv 函数:这个函数是用来计算两个序列的卷积和,调用此函数,可以将两个给定的序列计算出卷积和,调用格式为f =conv(f1,f2)。

fspecial 函数

建立预定义的滤波算子, 其语法格式为:

h = fspecial()

h = fspecial(type,)

其中type 指定算子的类型,para 指定相应的参数

gaussian 为高斯低通滤波'laplacian 为为高斯算子motion 运动模糊算子prewitt 用于边缘增强sobel 用于边缘提取

unsharp 对比度增强滤波器

图片像素的降低与恢复

I=imread('2.jpg' );%读取图片

g=rgb2gray(I);%彩色图像灰度化

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

figure;imshow(g);%显示灰度值图片

%降低图像分辨率

g_down_1=g(1:2:end,1:2:end);%512

g_down_2=g_down_1(1:2:end,1:2:end);%256

g_down_3=g_down_2(1:2:end,1:2:end);%128

g_down_4=g_down_3(1:2:end,1:2:end);%64

g_down_5=g_down_4(1:2:end,1:2:end);%32

figure;imshow(g_down_1);%显示

figure;imshow(g_down_2);%显示

figure;imshow(g_down_3);%显示

figure;imshow(g_down_4);%显示

figure;imshow(g_down_5);%显示

%把降低分辨率的图像恢复原大小

G_up_5_near=imresize(g_down_3,8,'nearest' ); %最近邻法放大

G_up_5_bil=imresize(g_down_5,32,'bilinear' ); %双线性插值法放大 G_up_5_bic=imresize(g_down_5,32,'bicubic' ); %三次内插法放大 figure;imshow(G_up_5_near);%显示

figure;imshow(G_up_5_bil);%显示

figure;imshow(G_up_5_bic);%显示

图像的四则运算和减法运算

clear;clc;%清空变量及工作区

I=imread('11.jpg' );%读取图片

I=rgb2gray(I);%彩色图像灰度化

I2=imread('22.jpg' );%读取图片

I2=rgb2gray(I2);%彩色图像灰度化

K=imlincomb(0.6,I,0.4,I2);%计算两幅图像的线性组合

K=histeq(K);%进行直方图均衡化

imshow(K);

figure;

I1=imread('1.jpg' );

I2=imread('2.jpg' );

I=I1-I2;%图像相减

imshow(I);

histeq (X )函数实现直方图均衡。因为此函数只能对灰度图像进

行直方图均衡。故应先将彩图转为灰度图像

位图显示

clear;clc;

I=imread('aerial.tif'

);

I=double(I);

G_7=bitand(I,128);%求灰度值第七位

I_7=im2uint8(mat2gray(G_7));%转换为无符号八位整型

figure;imshow(I_7);%显示第七位位图

G_6=bitand(I,64);%求灰度值第6位

I_6=im2uint8(mat2gray(G_6));%转换为无符号八位整型

figure;imshow(I_6);%显示第6位位图

G_5=bitand(I,32);

I_5=im2uint8(mat2gray(G_5));

figure;imshow(I_5);

G_4=bitand(I,16);

I_4=im2uint8(mat2gray(G_4));

figure;imshow(I_4);

G_3=bitand(I,8);

I_3=im2uint8(mat2gray(G_3));

figure;imshow(I_3);

G_2=bitand(I,4);

I_2=im2uint8(mat2gray(G_2));

figure;imshow(I_2);

G_1=bitand(I,2);

I_1=im2uint8(mat2gray(G_1));

figure;imshow(I_1);

G_0=bitand(I,1);

I_0=im2uint8(mat2gray(G_0));

figure;imshow(I_0);

I_restore=G_7+G_6+G_5+G_4+G_3+G_2+G_1+G_0;%读取重新储存的图片 figure;imshow(uint8(I_restore));%显示

骨骼图的显示

%读取图像

I=imread('Fig0343(a)(skeleton_orig).tif');

%显示a 图像

A=im2double(I);

subplot(2,4,1);

imshow(A);

title('(a)全身骨骼扫描图像');

%显示b 图像

subplot(2,4,2);

A=double(A);

w1=fspecial('laplacian',0);

B=imfilter(A,w1,'corr','replicate');

imshow(B); %得到拉普拉斯变换后的图像

title('(b)经过拉普拉斯操作后的结果');

%显示c 图像

subplot(2,4,3);

C=A+B; %得到A+B的结果

imshow(C);

title('(c)图a 加图b 得到的锐化图像');

%显示d 图像

subplot(2,4,4);

w1=fspecial('sobel'); %得到水平sobel 模板

w2=w1'; %转置得到竖直sobel 模板

G1=imfilter(A,w1); %水平sobel 梯度

G2=imfilter(A,w2); %竖直sobel 梯度

D=abs(G1)+abs(G2); %sobel梯度

imshow(D);

title('(d)图a 经sobel 梯度处理后的结果');

%显示e 图像

subplot(2,4,5);

e=fspecial('average',5);

E=imfilter(D,e,'corr','replicate');

imshow(E);

title('(e)使用5*5均值滤波器平滑后的sobel 图像');

%显示f 图像

subplot(2,4,6);

C=im2double(C);

E=im2double(E);

F=C.*E; imshow(F);

title('(f)图c 和图e 相乘形成的掩蔽图像');

%显示g 图像

subplot(2,4,7);

G=abs(A)+abs(F);

imshow(G);

title('(g)由图a 和图f 求和得到的锐化后的图像');

%显示h 图像

subplot(2,4,8);

imshow(imadjust(G,[],[],0.5));

title('(h)对图g 应用幂律变换得到的最终结果');

灰度直方图操作

clear;clc;

I=imread('moon.tif' );

figure;imshow(I);

figure;imhist(I); %显示灰度直方图

h=imhist(I,256); %长条图显示,宽度为1,

figure;bar(h);

h_scale=imhist(I,25);

x=linspace(0,255,25);%创建向量

figure;bar(x,h_scale); %长条图显示,宽度为25

I_equ=histeq(I,256); %直方图均衡化

figure;imhist(I_equ);

figure;imshow(I_equ);

figure;bar(imhist(I_equ));

图像锐化梯度算子的应用

clear;clc;

f=imread('building.tif' );

f=im2double(f);

w1=fspecial('sobel' ); %得到水平sobel 模板

w2=w1';%转置得到竖直sobel 模板

g1=imfilter(f,w1,'replicate' ); %横向梯度算子结果

g2=imfilter(f,w2,'replicate' ); %纵向梯度算子结果

g=abs(g1)+abs(g2);%sobel梯度

imshow(f);figure;

imshow(g1);figure;

imshow(g2);figure;

imshow(g);

图像锐化拉普拉斯算子的引用

clear;clc;

f=imread('moon.tif' );

w4=fspecial('laplacian' ,0);%生成拉普拉斯滤波器

w8=[1 1 1;1 -8 1;1 1 1];

f=im2double(f);

g4=f-imfilter(f,w4,'replicate' ); %g4=f-imfilter(f,w4,'symmetric');

g8=f-imfilter(f,w8,'replicate' ); %g8=f-imfilter(f,w8,'symmetric');

[A,B]=find(g4

g4(A(i,1),B(i,1))=0;%令这些元素为0

end

[C,D]=find(g4>1);%找出矩阵中大于一元素所在行和列, 并存在[c,d]中 for i=1:length(C) %从1到length (C )循环

g4(C(i,1),D(i,1))=1;%令这些元素为1

end

figure;imshow(f);

%g4=im2uint8(mat2gray(g4));

%g8=im2uint8(mat2gray(g8));

figure;imshow(imfilter(f,w4,'replicate' ))

figure;imshow(g4);

figure;imshow(imfilter(f,w8,'replicate' ))

figure;imshow(g8);

平滑空间滤波器

clear;clc;

I=imread('pattern.tif' );%读取图像

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

h=fspecial('average' ,[14 14]);%产生均值滤波器模板

g=imfilter(I,h,'replicate' );%滤波

imshow(g);

%阈值分割

I=imread('galaxy.tif' );

h=fspecial('average' ,[15 15]);%产生均值滤波器模板

g=imfilter(I,h,'replicate' );%滤波

level = graythresh(g);%通过计算获得输入图像的阈值

BW = im2bw(g,level);%通过阈值变换法把灰度图像转换成二值图像 imshow(BW);

%中值滤波

I=imread('imnoise.tif' );

g=medfilt2(I,[3 3]);%窗口大小为3×3的中值滤波

%g=medfilt2(I,[3 3],'symmetric');

imshow(g);

%顺序滤波

A=imread('imnoise.tif' );

B=ordfilt2(A,15,true(7),'symmetric');%图像作顺序统计滤波 figure;imshow(A);figure;imshow(B)

图像增强的三种方法

% inverse transformation

I=imread('breast.tif' );

g=im2uint8(mat2gray(I));%图像数据类型转换为无符号八位整型。 g_inver=255-g;%图像反转

figure;imshow(I);

figure;imshow(g_inver);

%log transform

I=imread('fourier.tif' );

g=im2uint8(mat2gray(log(1+double(I))));%对图像进行对数变换 figure;imshow(I);

figure;imshow(g);

% power transform moon.tifaerial.tif

I=imread('aerial.tif' );

g=im2uint8(mat2gray(double(I).^(2)));%对图像进行幂律变换 %g=255-I;

figure;

imshow(I);

figure;

imshow(g);

理想低通滤波器

f=imread('dynamic_range.tif'); 索引形式读入

imshow(f);显示图像

title('Ô-ͼ');

f=im2double(f);按比例的将其缩放至double 类型

F=fftshift(fft2(f));正半轴部分和负半轴部分的图像分别关于各自的中心对称 M=size(F,1);表示维数的第一项

N=size(F,2);表示维数的第二项

u=1:M;u=[1,2,3,4,…M]

v=1:N;v=[1,2,3,4,…N]

[V,U]=meshgrid(v,u);产生两个矩阵,第一个矩阵是由v 作为行向量组成,第二个向量由u 作为列向量组成

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); 计算公式 H=zeros(M,N);产生一个mxn 的全零矩阵

H(D

G=F.*H;进行卷积

G_inv=ifft2(ifftshift(G));进行图像二维离散快速傅里叶变换

figure; 建立图形

imshow(real(G_inv));显示图像

title('Â˲¨ºó');

alpha=sum(abs(F(D

巴特沃斯低通滤波器

f=imread('pattern.tif' ); 索引形式读入

imshow(f);显示图像

%title('Ô-ͼ');

f=im2double(f);按比例的将其缩放至double 类型

F=fftshift(fft2(f));正半轴部分和负半轴部分的图像分别关于各自的中心对称 M=size(F,1);表示维数的第一项

N=size(F,2);表示维数的第二项

u=1:M;u=[1,2,3,4,…M]

v=1:N;v=[1,2,3,4,…N]

[V,U]=meshgrid(v,u);产生两个矩阵,第一个矩阵是由v 作为行向量组成,第二个向量由u 作为列向量组成

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); 计算公式?

H=zeros(M,N);产生一个mxn 的全零矩阵

D0=235;n=2; %2阶

H=1./(1+(D./D0).^(2*n));公式?

G=F.*H; 进行卷积? G_inv=ifft2(ifftshift(G));进行图像二维离散快速傅里叶变换 figure; 建立图形

imshow(real(G_inv));显示图像

%title('Â˲¨ºó')

高斯低通滤波器

clear;clc;

f=imread('broken-text.tif' ); 索引形式读入

imshow(f);显示图像

%title('Ô-ͼ');

f=im2double(f);按比例的将其缩放至double 类型

F=fftshift(fft2(f));正半轴部分和负半轴部分的图像分别关于各自的中心对称 M=size(F,1);表示维数的第一项

N=size(F,2);表示维数的第二项

u=1:M;u=[1,2,3,4,…M]

v=1:N;v=[1,2,3,4,…N]

[V,U]=meshgrid(v,u);产生两个矩阵,第一个矩阵是由v 作为行向量组成,第二个向量由u 作为列向量组成

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2);计算公式?

H=zeros(M,N);产生一个mxn 的全零矩阵

D0=80;

H=exp(-D.^2./(2*D0.^2));公式

G=F.*H;

G_inv=ifft2(ifftshift(G));进行图像二维离散快速傅里叶变换 figure;imshow(real(G_inv));

%title('Â˲¨ºó')

高斯高通滤波器(同上)

clear;clc;

f=imread('chest_xray.tif');

imshow(f);

%title('Ô-ͼ');

f=im2double(f);

F=fftshift(fft2(f));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u);

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); L=zeros(M,N);

D0=2; 截止频率=2

L=exp(-D.^2./(2*D0.^2));

H=1-L;低通变成高通

G=F.*H;

G_inv=ifft2(ifftshift(G));

figure;imshow(real(G_inv),[]);

%title('Â˲¨ºó')

巴特沃斯高通滤波器(同上)

f=imread('thumb_print.tif');

imshow(f);

%title('Ô-ͼ');

f=im2double(f);

F=fftshift(fft2(f));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u);

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); L=zeros(M,N);

D0=25;n=4;截止频率=25 ,设为4阶

L=1./(1+(D./D0).^(2*n));

H=1-L; 低通变成高通

G=F.*H;

G_inv=real(ifft2(ifftshift(G)));

figure;imshow(G_inv);

%title('Â˲¨ºó')

I_thresh=G_inv; %指纹处理

[A,B]=find(I_thresh

[C,D]=find(I_thresh>=0);找出矩阵中I_thresh>=0元素所在行和列, 并存在C,D 中

for i=1:length(A)取i 分别为在1到length(A)的每一个数

I_thresh(A(i,1),B(i,1))=0;令这些元素为0

end

for i=1:length(C)(同上)

I_thresh(C(i,1),D(i,1))=1;令这些元素为1

end

figure;imshow(I_thresh);

clear;clc;

I=zeros(512,512);产生一个512x512的全零矩阵

I(226:286,240:266)=1;

imshow(I);

F=fft2(I);

F_no_shift=abs(F);

F_shift=abs(fftshift(F));

% G_no_shift=log(1+F_no_shift);

G_shift=log(1+F_shift);

%figure;imshow(F_no_shift,[]);

% figure;imshow(G_no_shift,[]);

figure;imshow(F_shift,[]);

figure;imshow(G_shift,[]);

%

% %图像旋转

I2=imrotate(I,45,'bilinear' , 'crop' );

figure;imshow(I2);

F2=fft2(I2);

F2_shift=abs(fftshift(F2));

G2_shift=log(1+F2_shift);

figure;imshow(F2_shift,[]);

figure;imshow(G2_shift,[]);

振铃效应

f=zeros(512,512);

f(128,128)=255;

f(128,384)=255;

f(384,128)=255;

f(384,384)=255;

f(256,256)=255;

figure;imshow(f);

f=im2double(f);

F=fftshift(fft2(f));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u);

D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); H=zeros(M,N);

H(D

G=F.*H;

G_inv=ifft2(ifftshift(G));

figure;imshow(real(G_inv),[]);

拉普拉斯滤波器

clear;clc;

f=imread('moon.tif' );

imshow(f);

%title('moon');

f=im2double(f);

F=fftshift(fft2(f));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u);

H=zeros(M,N);

H=-4*pi^2*((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); G=F.*H;

G1=real(ifft2(ifftshift(G)));

figure;imshow(G1,[]);%线性映射0-255

G2=G1-min(G1(:));

G2=G2/max(G2(:));

G3=im2uint8(G2);

%figure;imshow(G3)%G3ÏßÐÔÓ³Éä µÈͬÓÚimshow£¨G1,[]); %title('±ê¶¨ºóµÄͼÏñ');

G2=f-G2;

figure;imshow(G2,[]);

%title('À-ÆÕÀ-˹Ëã×ÓÔöǿͼÏñ');

%空间拉普拉斯算子

w4=fspecial('laplacian' ,0);

sp=imfilter(f,w4);

g4=f-sp;

figure;imshow(sp,[]);

figure;imshow(g4,[]);

第六章

e dge_function clear;clc; %清空命令窗口的所有输入和输出 I=imread('1.jpg' ); %读入wirebond_mask.tif图像

BW_sobel=edge(I,'sobel' ); %图像边缘提取

imshow(BW_sobel); %显示图像

BW_prewitt=edge(I,'prewitt' ); %prewitt图像边缘提取

figure;imshow(BW_prewitt); %产生新的窗口,显示图像 BW_log=edge(I,'log' ); %用log 算子进行边缘检测

figure;imshow(BW_log); %产生新的窗口,显示图像

[BW_cannyth]=edge(I,'canny' ); %canny 算子检测法检测图像边缘 figure;imshow(BW_canny); %产生新的窗口,显示图像

hough_trans

clear;clc; %清空命令窗口的所有输入输出

I=zeros(101,101); %zeros 就是生成一个全0的矩阵

I(1,1)=1;I(101,1)=1; %第1行第1列,元素为1

I(1,101)=1;I(101,101)=1;

I(51,51)=1;

[H,theta,rho]=hough(I);

subplot(1,2,1);imshow(I);

subplot(1,2,2);

imshow(imadjust(mat2gray(H)),'XData' ,theta, 'YData' ,rho, ... 'InitialMagnification' , 'fit' );

line_detection

f=imread('1.jpg' );

imshow(f);

w=[1 1 1;1 -8 1;1 1 1 ];

g=imfilter(f,w,'replicate' );

%imfilter根据指定操作进行多维滤波

figure;imshow(g,[])

figure,imshow(abs(g),[]);

g(g

figure;imshow(g,[]);

T=0.5*max(g(:));

m=g>=T;

figure;imshow(m,[]);

line_direction_detection

f=imread('wirebond_mask.tif');

f=im2double(f);

imshow(f);

w_h=[-1 -1 -1;2 2 2;-1 -1 -1];

w_v=w_h';

w_45=[-1 -1 2;-1 2 -1;2 -1 -1];

w_n45=[2 -1 -1;-1 2 -1;-1 -1 2];

g_h=imfilter(f,w_h,'replicate' );

g_v=imfilter(f,w_v,'replicate' );

g_45=imfilter(f,w_45,'replicate' );

g_n45=imfilter(f,w_n45,'replicate' );

% figure;imshow(g_h,[])

% figure;imshow(g_v,[])

% figure;imshow(g_45,[])

% figure;imshow(g_n45,[])

T_h=0.5*max(g_h(:));

m_h=g_h>=T_h;

figure;imshow(m_h,[]);

T_v=0.5*max(g_v(:));

m_v=g_v>=T_v;

figure;imshow(m_v,[]);

T_45=0.5*max(g_45(:));

m_45=g_45>=T_45;

figure;imshow(m_45,[]);

T_n45=0.5*max(g_n45(:));

m_n45=g_n45>=T_n45;

figure;imshow(m_n45,[]);

smooth_line_detection

clear;clc;

f=imread('building_original.tif');

f=im2double(f);

imshow(f);

h=fspecial('average' ,[5 5]);

f=imfilter(f,h,'replicate' );

wh=fspecial('sobel' );

wv=wh';

gh=abs(imfilter(f,wh,'replicate' ));

gv=abs(imfilter(f,wv,'replicate' ));

figure;imshow(gh);

figure;imshow(gv);

g_all=gh+gv;

Th=0.5*max(gh(:));

mh=gh>=Th;

figure,imshow(mh);

Tv=0.5*max(gv(:));

mv=gv>=Tv;

figure,imshow(mv);

T_all=0.3*max(g_all(:));

m_all=g_all>=T_all;

figure,imshow(m_all);

spot_detection

f=imread('turbine_blade_black_dot.tif');

f=im2double(f);

imshow(f);

w=[1 1 1;1 -8 1;1 1 1 ];

g=imfilter(f,w,'replicate' );

figure;imshow(g,[])

T=0.9*max(g(:));

m=g>=T;

figure,imshow(m);

threshold_seg

I=imread('polymersomes.tif' );

T=graythresh(I);

g=I>=T*255;

figure,imshow(g);

同态滤波器

clear;clc

f=imread('dynamic_range.tif');

figure;imshow(f);

f=im2double(f);

F=fftshift(fft2(log(f+eps)));

M=size(F,1);N=size(F,2);

u=1:M;

v=1:N;

[V,U]=meshgrid(v,u); %meshgrid用于生成网格采样点的函数。 D=sqrt((U-(floor(M/2)+1)).^2+(V-(floor(N/2)+1)).^2); H=zeros(M,N);

D0=2;c=1.5;%1.5;

H=1.5*(1-exp(-c*D.^2./D0.^2))+0.5;

G=F.*H;

G1=ifft2(ifftshift(G));

g=real(exp(G1)); %real,复数的实部数值

% g=mat2gray(g); %mat2gray 实现图像矩阵的归一化操作。 所谓" 归一化" 就是使矩阵的每个元素的值都在0和1之间。该函数在数字图像处理中经常用到。

g_min=min(g(:));

g_cor=g-g_min;

g_cor=g_cor./max(g_cor(:));

%g_cor=histeq(g_cor); %直方图均衡化

figure;imshow(g_cor,[]);

% title('同态滤波图');

%直方图均衡化¯

figure;imshow(histeq(f))

figure;imshow(g_gama,[]);

a=[8,1,6;3,5,7;4,9,2]; b=[1,1,1;1,1,1;1,1,1];

c1=conv2(a,b); %conv2二维卷积运算函数

a(5,5)=0;b(5,5)=0;%扩展矩阵,因为ab 卷积结果是5*5

c2=ifft2(fft2(a).*fft2(b));

function :在MATLAB 中不是它的自带函数就可以完成所有功能,更多的时候是自己编写程序来实现我们要的功能,这时就要用到此命令,调用格式为:function ****( ) 括号外面为函数名称,括号中为函数中要用到的变量。

plot 命令:plot 命令是MATLAB 中用来绘制用向量表示法(在下一章中讲到) 表示的连续信号的波形。它的功能是将向量点用直线依次连接起来。调用格式:plot(k,f),其中k 和f 是向量。 ezplot 命令:ezplot 命令是用来绘制用符号运算表示法表示的连续信号的波形。调用格式:ez plot(f,[t1,t2]),其中[t1,t2]为一时间范围,f 为以t 为变量的函数。

title 命令:在绘图命令中,我们可以用此命令来对绘制出来的波形做一些注释,以便后期我们做图形处理。调用格式为:title(‘ …… ’) 中间部分可以任意对图形进行注释的文字。

xlabel 、ylabel 命令:这两个也是来对绘制出来的波形做标注用的,可以标注出两个坐标轴的未知数的意义,增加图形中的信息量。调用格式:xlabel(‘ …… ’),ylabel(‘ …… ’) 中间可以是对坐标轴做注释的文字或字母。

axis 命令:此命令可以来定义绘制波形中坐标的范围。调用格式为:axis([k1,k2,g1,g2]),其中k1,k2表示横坐标的范围,g1,g2表示纵坐标的范围。

syms 命令:在符号表示法中,可以用此命令来定义变量。调用格式为:syms t 意思是定义一个变量t 。

sym 命令:是符号表示法中的调用系统自带函数的命令。调用格式为:f=sym(‘……’) 中间为系统能识别的常用信号。

stem 命令:此命令专门用来绘制离散序列的波形。调用格式为:stem(k,f) 调用此命令可以绘制出离散序列的点状图。

subs 命令:此可以将连续信号中的时间变量t 用t -t0,at 等等来替换,从而可以完成信号在时域范围内的变换。调用格式为:subs(f,t,t-t0) 通过调用此函数可以把信号做移位,伸展等等变换。

fliplr 命令:此函数用来将向量以零时刻为基准点进行反折。调用格式为:f=fliplr(f1) 这样f 就是向量f1反折后的函数。

min 、max 命令:这两个命令可以用来比较算出一个向量中的最小值和最大值,或者比较得出两个值中的较小值。调用格式为:min(k),max(k),min(k1,k2),max(k1,k2)

length 命令:此函数可以计算出向量的长度。调用格式为:length(f)。

ones 函数:这是MATLAB 中一个常用的函数,它产生元素全部为1的矩阵,本文中用此函数来表示离散阶跃序列,或者定义连续的门信号,调用格式为:n =0:5

;ones(1,n)表示长度为整数n 的阶跃序列。k=1:p:8;ones(1,length(k))表示长度为k 的门信号。

subplot 命令:在MATLAB 绘图过程中,有时候为了便于观测图形的变化,需要在一幅波形显示窗口显示多个信号的波形,这时可以调用subplot 命令。调用格式为:subplot(n1,n2,k),如定义一个subplot(2,2,1),就可以在显示窗口中显示k=2×2个波形。

conv 函数:这个函数是用来计算两个序列的卷积和,调用此函数,可以将两个给定的序列计算出卷积和,调用格式为f =conv(f1,f2)。

fspecial 函数

建立预定义的滤波算子, 其语法格式为:

h = fspecial()

h = fspecial(type,)

其中type 指定算子的类型,para 指定相应的参数

gaussian 为高斯低通滤波'laplacian 为为高斯算子motion 运动模糊算子prewitt 用于边缘增强sobel 用于边缘提取

unsharp 对比度增强滤波器


相关文章

  • 第1章 计算机数值处理
  • 第1章 计算机数值处理 1. ______是计算机的加工对象,以二进制编码方式,存储在计算机内部.______集合中的元素可以采用各种不同的结构. 公式 文字 ASCII码 数据 正确答案为===>>数据 2. 计算机接收数字信 ...查看


  • 16秋北航[数字媒体精品赏析]在线作业三
  • 北航<数字媒体精品赏析>在线作业三 一.单选题(共 10 道试题,共 40 分.) 1. ( )是Windows 的通用声音格式. A. WA V B. MP3 C. BMP D. CAD 正确答案: 2. ()是利用光学原理与 ...查看


  • 数字信号处理期末试题及答案
  • 一.填空题(每空1分, 共10分) 1.序列x (n ) =sin(3πn /5) 的周期为10. 2.线性时不变系统的性质有交换 结合分配律. 3.对x (n ) =R 4(n ) 的Z 变换为 4.抽样序列的Z 变换与离散傅里叶变换DF ...查看


  • 数字媒体技术基础A答案
  • 教育科学学院2011 –2012 学年第 1学期期末考试 数字媒体艺术10-5班<数字媒体技术基础>试卷A 卷参考答案 一.填空题:(每空1分,共20分) 1.感觉媒体.表述媒体.表现媒体.存储媒体.传输媒体. 2.元素化.互动 ...查看


  • 会计电算化题目带答案
  • 会计电算化题目(真题)及答案 一. 选择题 1.商品化会计软件比自行开发的会计软件(a ). A.通用性强.成本低 B.维护费小,购置成本高 C.成本高.开发水平低 D.通用性差.维护量大 2.企业建立电算化会计,首先要做的工作是(b ). ...查看


  • 多媒体应用设计师考前练习试题三
  • 多媒体应用设计师考前练习试题三 来源:考试大 [天天考试大,天天进步大!] 2010年4月18日 选择题 1.多媒体的关键特性主要包括信息载体的多样化.交互性和 (1) . (1)A.活动性 B.可视性 C.规范化 D.集成性 [参考答案] ...查看


  • 电子商务技术基础课后习题及答案
  • 电子商务技术基础课后习题及参考答案 第一章:参考答案 1.传统的商务与现代电子商务有什么区别? 参考答案:电子商务将传统商业活动中物流.资金流.信息流的传递方式利用网络科技整合,企业将重要的信息通过全球信息网(WWW).企业内部网(intr ...查看


  • 大学几乎所有学科的课本答案[2]
  • 大学几乎所有学科的课本答案! 来源: 任明嘉的日志 经济金融 [PDF格式]<会计学原理>同步练习题答案 [Word格式]<成本会计>习题及答案(自学推荐,23页) [Word格式]<成本会计>配套习题集 ...查看


  • 高西全版数字信号处理 第七章+课后答案
  • w w w . 课后答案网k h d a w . c o m w w w . 课后答案网k h d a w . c o m w w w . 课后答案网k h d a w . c o m w w w . 课后答案网k h d a w . c ...查看


  • 2016年反假币上岗资格证练习题三
  • 练习题三 单选题 1.第二套人民币中1956年版的五元券是( )发行的? A.1960年4月20日 B.1961年4月20日 C.1962年4月20日 D. 1963年4月20日 标准答案:C 2.中国人民银行公告2015年第五套人民币10 ...查看


热门内容