数字图像处理的答案解剖.docx

上传人:b****3 文档编号:4001527 上传时间:2023-05-06 格式:DOCX 页数:27 大小:187.23KB
下载 相关 举报
数字图像处理的答案解剖.docx_第1页
第1页 / 共27页
数字图像处理的答案解剖.docx_第2页
第2页 / 共27页
数字图像处理的答案解剖.docx_第3页
第3页 / 共27页
数字图像处理的答案解剖.docx_第4页
第4页 / 共27页
数字图像处理的答案解剖.docx_第5页
第5页 / 共27页
数字图像处理的答案解剖.docx_第6页
第6页 / 共27页
数字图像处理的答案解剖.docx_第7页
第7页 / 共27页
数字图像处理的答案解剖.docx_第8页
第8页 / 共27页
数字图像处理的答案解剖.docx_第9页
第9页 / 共27页
数字图像处理的答案解剖.docx_第10页
第10页 / 共27页
数字图像处理的答案解剖.docx_第11页
第11页 / 共27页
数字图像处理的答案解剖.docx_第12页
第12页 / 共27页
数字图像处理的答案解剖.docx_第13页
第13页 / 共27页
数字图像处理的答案解剖.docx_第14页
第14页 / 共27页
数字图像处理的答案解剖.docx_第15页
第15页 / 共27页
数字图像处理的答案解剖.docx_第16页
第16页 / 共27页
数字图像处理的答案解剖.docx_第17页
第17页 / 共27页
数字图像处理的答案解剖.docx_第18页
第18页 / 共27页
数字图像处理的答案解剖.docx_第19页
第19页 / 共27页
数字图像处理的答案解剖.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数字图像处理的答案解剖.docx

《数字图像处理的答案解剖.docx》由会员分享,可在线阅读,更多相关《数字图像处理的答案解剖.docx(27页珍藏版)》请在冰点文库上搜索。

数字图像处理的答案解剖.docx

数字图像处理的答案解剖

图片像素的降低与恢复

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=[111;1-81;111];

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<0);%找出矩阵中小于零元素所在行和列,并存在[A,B]中

fori=1:

length(A)%从1到length(A)循环

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

end

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

fori=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',[1414]);%产生均值滤波器模板

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

imshow(g);

%阈值分割

I=imread('galaxy.tif');

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

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

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

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

imshow(BW);

%中值滤波

I=imread('imnoise.tif');

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

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

imshow(g);

%顺序滤波

A=imread('imnoise.tif');

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

figure;imshow(A);figure;imshow(B)

 

图像增强的三种方法

%inversetransformation

I=imread('breast.tif');

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

g_inver=255-g;%图像反转

figure;imshow(I);

figure;imshow(g_inver);

%logtransform

I=imread('fourier.tif');

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

figure;imshow(I);

figure;imshow(g);

%powertransformmoon.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<=235)=1;令D<=235在范围内的为1

G=F.*H;进行卷积

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

figure;建立图形

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

title('Â˲¨ºó');

alpha=sum(abs(F(D<=5)).^2)./sum(abs(F(:

)).^2)计算?

 

巴特沃斯低通滤波器

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<0);找出矩阵中I_thresh<0元素所在行和列,并存在A,B中

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

fori=1:

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

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

end

fori=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<=5)=1;

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,[]);

 

第六章

edge_function

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

I=imread('1.jpg');%读入wirebond_mask.tif图像

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

imshow(BW_sobel);%显示图像

BW_prewitt=edge(I,'prewitt

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2