数字图像处理期末复习资料全.docx

上传人:b****2 文档编号:24245318 上传时间:2023-05-25 格式:DOCX 页数:20 大小:72.07KB
下载 相关 举报
数字图像处理期末复习资料全.docx_第1页
第1页 / 共20页
数字图像处理期末复习资料全.docx_第2页
第2页 / 共20页
数字图像处理期末复习资料全.docx_第3页
第3页 / 共20页
数字图像处理期末复习资料全.docx_第4页
第4页 / 共20页
数字图像处理期末复习资料全.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数字图像处理期末复习资料全.docx

《数字图像处理期末复习资料全.docx》由会员分享,可在线阅读,更多相关《数字图像处理期末复习资料全.docx(20页珍藏版)》请在冰豆网上搜索。

数字图像处理期末复习资料全.docx

数字图像处理期末复习资料全

空域对图像进行平移运算(几何运算)

图像平移变换式的矩阵形式为:

P37

closeall;

clearall;

clc;

%图像的平移运算

Im=imread('meinv.jpg');

ifnumel(size(Im))>2%如果是彩色图像就转换为灰度图像

Im=rgb2gray(Im);

end

Im=im2double(Im);%归一化处理

subplot(1,2,1);imshow(Im);title('平移前的图像');

[m,n]=size(Im);%获取图像大小

res=zeros(m,n)+255;%构造结果矩阵。

每个像素点默认初始化为0(黑色)

delX=50;%平移量X

delY=50;%平移量Y

mask=[10delX;01delY;001];%平移的变换矩阵

fori=1:

m

forj=1:

n

tmp=[i;j;1];

tmp=mask*tmp;%矩阵乘法得到的结果是一个3行1列的数

x=tmp(1,1);

y=tmp(2,1);

%判断变换后的位置是否越界

if(x<=m)&&(y<=n)&&(x>=1)&&(y>=1)

res(x,y)=Im(i,j);

end

end

end

subplot(1,2,2);imshow(res);title('平移后的图像');

空域对图像进行镜像运算(几何运算)

%灰度图像

clc

clear

img=imread('meinv.jpg');%读取图像

ifndims(img)==3%ndims(a)表示矩阵a的维数。

如果是彩色图像就转换为灰度图像

img=rgb2gray(img);%转换

end

subplot(1,3,1);imshow(img);title('原始图像');

img=im2double(img);%转换为double类型,使所有点在0-1之间

[m,n]=size(img);%获取图像大小

res1=zeros(m,n)+255;%构造结果矩阵,加255将图像初始化为白色,不加就是黑色

res2=zeros(m,n)+255;

fori=1:

m

forj=1:

n

res1(i,n-j+1)=img(i,j);%水平镜像

res2(m-i+1,j)=img(i,j);%垂直镜像

end

end

subplot(1,3,2);imshow(res1);title('水平镜像');

subplot(1,3,3);imshow(res2);title('垂直镜像');

imwrite(res1,'hor.bmp');

imwrite(res2,'ver.bmp');

%彩色图像

clc

clear

img=imread('meinv.jpg');%读取图像

subplot(1,3,1);imshow(img);title('原始图像');

img=im2double(img);%转换为double类型,使所有点在0-1之间

[m,n,l]=size(img);%获取图像大小

res1=zeros(m,n,l)+255;%构造结果矩阵,加255将图像初始化为白色,不加就是黑色

res2=zeros(m,n,l)+255;

fori=1:

m

forj=1:

n

fork=1:

l

res1(i,n-j+1,k)=img(i,j,k);%水平镜像

res2(m-i+1,j,k)=img(i,j,k);%垂直镜像

end

end

end

subplot(1,3,2);imshow(res1);title('水平镜像');

subplot(1,3,3);imshow(res2);title('垂直镜像');

imwrite(res1,'hor.bmp');

imwrite(res2,'ver.bmp');

空域使用指定的模板对灰度图像进行平滑处理

[1]%均值滤波

clc

closeall;

clear

img=imread('meinv.jpg');

ifnumel(size(img))>2%如果是彩色图像就转换为灰度图像

img=rgb2gray(img);

end

figure;imshow(img);

img=double(img);

%n是模板大小(即n×n)

n=3;

a(1:

n,1:

n)=1;%a即n×n模板,元素全是1

[height,width]=size(img);%输入图像是[height,width]的,且hight>n,width>n

x1=double(img);

x2=x1;

fori=1:

height-n+1

forj=1:

width-n+1

c=x1(i:

i+(n-1),j:

j+(n-1)).*a;%取出x1中从(i,j)开始的n行n列元素与模板相乘

s=sum(sum(c));%求c矩阵中各元素之和

x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n);%将与模板运算后的各元素的均值赋给模板中心位置的元素

end

end

%未被赋值的元素取原值

pha=uint8(x2);

figure;imshow(pha);

[2]%中值滤波(最大值滤波、最小值滤波)

clc

closeall;

clear

img=imread('meinv.jpg');

ifnumel(size(img))>2%如果是彩色图像就转换为灰度图像

img=rgb2gray(img);

end

figure;imshow(img);

img=double(img);

%n是模板大小(即n×n)

n=3;

a(1:

n,1:

n)=1;%a即n×n模板,元素全是1

[height,width]=size(img);%输入图像是[height,width]的,且hight>n,width>n

x1=double(img);

x2=x1;

fori=1:

height-n+1

forj=1:

width-n+1

c=x1(i:

i+(n-1),j:

j+(n-1));%取出x1中从(i,j)开始的n行n列元素,即模板(n×n的)

e=c(1,:

);%是c矩阵的第一行

foru=2:

n

e=[e,c(u,:

)];%将c矩阵变为一个行矩阵

end

%mm=median(e);%mm是中值(mm=max(e)是最大值,mm=min(e)是最小值)

mm=min(e);

x2(i+(n-1)/2,j+(n-1)/2)=mm;%将模板各元素的中值赋给模板中心位置的元素

end

end

%未被赋值的元素取原值

pha=uint8(x2);

figure;imshow(pha);

彩色图像平滑处理(均值滤波)

closeall;

clear

clc

img=imread('meinv.jpg');

if(numel(size(img))<3)

disp('请输入彩色图像');

else

subplot(2,3,1);imshow(img);title('原始图像');

img=imnoise(img,'gaussian');%g=imnoise(f,‘gaussian’,m,var)是将均值为m,方差为var的高斯噪声加到图像f上。

m的默认值是0、var默认值是0.01

subplot(2,3,2);imshow(img);title('添加噪声后的图像');

%分解

img=double(img);

R=img(:

:

1);

G=img(:

:

2);

B=img(:

:

3);

%对彩色图像的R分量进行平滑处理,而其它分量保持不变

[m,n]=size(R);

fori=2:

m-1

forj=2:

n-1

R(i,j)=(R(i-1,j-1)+R(i-1,j)+R(i-1,j+1)+R(i,j-1)+R(i,j)+R(i,j+1)+R(i+1,j-1)+R(i+1,j)+R(i+1,j+1))/9;

end

end

img1=cat(3,R,G,B);

img1=uint8(img1);

subplot(2,3,3);imshow(img1);title('R分量平滑处理后');

%对彩色图像的R分量和G分量进行平滑处理,B分量保持不变

R=img(:

:

1);

G=img(:

:

2);

B=img(:

:

3);

[m,n]=size(R);

fori=2:

m-1

forj=2:

n-1

R(i,j)=(R(i-1,j-1)+R(i-1,j)+R(i-1,j+1)+R(i,j-1)+R(i,j)+R(i,j+1)+R(i+1,j-1)+R(i+1,j)+R(i+1,j+1))/9;

G(i,j)=(G(i-1,j-1)+G(i-1,j)+G(i-1,j+1)+G(i,j-1)+G(i,j)+G(i,j+1)+G(i+1,j-1)+G(i+1,j)+G(i+1,j+1))/9;

end

end

img2=cat(3,R,G,B);

img2=uint8(img2);

subplot(2,3,4);imshow(img2);title('对R和G分量进行平滑处理后');

%对彩色图像的3个分量同时进行平滑处理

R=img(:

:

1);

G=img(:

:

2);

B=img(:

:

3);

[m,n]=size(R);

fori=2:

m-1

forj=2:

n-1

R(i,j)=(R(i-1,j-1)+R(i-1,j)+R(i-1,j+1)+R(i,j-1)+R(i,j)+R(i,j+1)+R(i+1,j-1)+R(i+1,j)+R(i+1,j+1))/9;

G(i,j)=(G(i-1,j-1)+G(i-1,j)+G(i-1,j+1)+G(i,j-1)+G(i,j)+G(i,j+1)+G(i+1,j-1)+G(i+1,j)+G(i+1,j+1))/9;

B(i,j)=(B(i-1,j-1)+B(i-1,j)+B(i-1,j+1)+B(i,j-1)+B(i,j)+B(i,j+1)+B(i+1,j-1)+B(i+1,j)+B(i+1,j+1))/9;

end

end

img3=cat(3,R,G,B);

img3=uint8(img3);

subplot(2,3,5);imshow(img3);title('对3个分量进行平滑处理后');

end

空域对灰度图像或彩色图像进行模板卷积运算及增强处理

[1]模板:

clc

closeall;

clear

%[FileName,FilePath]=uigetfile('*.jpg;*.png;*.tif;*.img;*.gif;','请选择图像数据');

%str=[FilePathFileName];

img=imread('meinv.jpg');

ifnumel(size(img))>2%如果是彩色图像就转换为灰度图像

img=rgb2gray(img);

end

subplot(1,3,1);imshow(img);title('原始图像');

[m,n]=size(img);

img=im2double(img);

dimg=img;%边界

fori=2:

m-1%非边界

forj=2:

n-1

dimg(i,j)=(img(i+1,j)+img(i-1,j)+img(i,j+1)+img(i,j-1))/4;

end

end

subplot(1,3,2);imshow(dimg);title('模板运算后的图像');

subplot(1,3,3);imshow(img+dimg);title('增强的图像');

[2]模板:

clc

closeall;

clear

img=imread('meinv.jpg');

ifnumel(size(img))>2%如果是彩色图像就转换为灰度图像

img=rgb2gray(img);

end

figure;imshow(img);

[m,n]=size(img);

img=im2double(img);

a=input('请输入a值(围在[0,1]之间):

');

dimg=img;%边界

fori=2:

m-1%非边界

forj=2:

n-1

dimg(i,j)=img(i-1,j)*(-a)+img(i,j-1)*(-a)+img(i,j)*(1+4*a)+img(i,j+1)*(-a)+img(i+1,j)*(-a);

end

end

figure;imshow(img+dimg);

[3]模板:

clc

closeall;

clear

img=imread('meinv.jpg');

ifnumel(size(img))>2%如果是彩色图像就转换为灰度图像

img=rgb2gray(img);

end

figure;imshow(img);

[m,n]=size(img);

img=im2double(img);

dimg=img;%边界

fori=3:

m-2%%处理非边界像素

forj=3:

n-2

dimg(i,j)=img(i-2,j-2)+img(i-2,j-1)*4+img(i-2,j)*7+img(i-2,j+1)*4+img(i-2,j+2)+img(i-1,j-2)*4+img(i-1,j-1)*16+img(i-1,j)*26+img(i-1,j+1)*16+img(i-1,j+2)*4+img(i,j-2)*7+img(i,j-1)*26+img(i,j)*41+img(i,j+1)*26+img(i,j+2)*7+img(i+1,j-2)*4+img(i+1,j-1)*16+img(i+1,j)*26+img(i+1,j+1)*16+img(i+1,j+2)*4+img(i+2,j-2)+img(i+2,j-1)*4+img(i+2,j)*7+img(i+2,j+1)*4+img(i+2,j+2);

end

end

figure;imshow(img+dimg/273);

拉普拉斯模板、锐化算子(P65)

[4]彩色图像拉普拉斯模板

closeall;

clear

clc;

img=imread('meinv.jpg');

if(numel(size(img))<3)

disp('请输入彩色图像');

else

subplot(2,2,1);imshow(img);title('原始图像');

img=im2double(img);

R=img(:

:

1);

G=img(:

:

2);

B=img(:

:

3);

%对R分量使用基本的Laplacian模板(P65)进行增强处理;R1=R+R0

[m,n]=size(R);

R1=R;

fori=2:

m-1

forj=2:

n-1

R1(i,j)=R(i,j)*(-4)+R(i-1,j)+R(i+1,j)+R(i,j-1)+R(i,j+1);

end

end

R2=R-R1;%模板中心为负,做减法运算

img1=cat(3,R2,G,B);

subplot(2,2,2);imshow(img1);title('对R分量处理后');

%对R和G分量使用扩展的Laplacian模板进行增强处理;

[m,n]=size(R);

R1=R;

G1=G;

fori=2:

m-1

forj=2:

n-1

R1(i,j)=R(i,j)*(-8)+R(i-1,j)+R(i+1,j)+R(i,j-1)+R(i,j+1)+R(i-1,j-1)+R(i+1,j-1)+R(i-1,j+1)+R(i+1,j+1);

G1(i,j)=G(i,j)*(-8)+G(i-1,j)+G(i+1,j)+G(i,j-1)+G(i,j+1)+G(i-1,j-1)+G(i+1,j-1)+G(i-1,j+1)+G(i+1,j+1);

end

end

R2=R-R1;%模板中心为负,做减法运算

G2=G-G1;

img2=cat(3,R2,G2,B);

subplot(2,2,3);imshow(img2);title('对R和G分量处理后');

%使用扩展的Laplacian模板对彩色图像的三个分量进行增强处理

[m,n]=size(R);

R1=R;

G1=G;

B1=B;

fori=2:

m-1

forj=2:

n-1

R1(i,j)=R(i,j)*(-8)+R(i-1,j)+R(i+1,j)+R(i,j-1)+R(i,j+1)+R(i-1,j-1)+R(i+1,j-1)+R(i-1,j+1)+R(i+1,j+1);

G1(i,j)=G(i,j)*(-8)+G(i-1,j)+G(i+1,j)+G(i,j-1)+G(i,j+1)+G(i-1,j-1)+G(i+1,j-1)+G(i-1,j+1)+G(i+1,j+1);

B1(i,j)=B(i,j)*(-8)+B(i-1,j)+B(i+1,j)+B(i,j-1)+B(i,j+1)+B(i-1,j-1)+B(i+1,j-1)+B(i-1,j+1)+B(i+1,j+1);

end

end

R2=R-R1;%模板中心为负,做减法运算

G2=G-G1;

B2=B-B1;

img3=cat(3,R2,G2,B2);

subplot(2,2,4);imshow(img3);title('对3个分量处理后');

end

频域对图像进行低通处理(理想、Butterworth等)。

6部(P83)

[1]Butterworth滤波:

clc

closeall;

clear

img=imread('meinv.jpg');

ifnumel(size(img))>2%如果是彩色图像就转换为灰度图像

img=rgb2gray(img);

end

subplot(221);imshow(img);xlabel('原图像');

img=double(img);%数据类型转换

img=fft2(img);%图像Fourier变换

img=fftshift(img);%Fourier变换平移,中心变换

%中心变换代码实现,反中心变化也是一样的

%fori=1:

m

%forj=1:

n

%img(i,j)=((-1)^(i+j))*img(i,j);

%end

%end

F2=log(abs(img));%对Fourier变换结果取绝对值,然后取对数

subplot(222);imshow(F2,[],'InitialMagnification','fit');%将计算后的矩阵用图像表示

xlabel('(b)原始图像的Fourier变换图像');

[N1,N2]=size(img);%Fourier变换图像尺寸

n=2;%参数赋初值。

高通n=0.3

d0=205;

n1=ro

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

当前位置:首页 > 自然科学 > 数学

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

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