matlab中二维图像的简单处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
close all;clear all;clc;
img=imread('D:\picture.gif');
img=rgb2gray(img);
[M,N]=size(img);
%图像的移动
P=[200,100];
H=[1,0,P(1);0,1,P(2);0,0,1];
for m=1:M
for n=1:N
arr=[m,n,1];
arr=H*transpose(arr); %应用矩阵转换算平移后的坐标
new_img(arr(1),arr(2))=img(m,n);
end
end
figure(1);
subplot(1,2,1);
imshow(img);title('原图像');
subplot(1,2,2);
imshow(new_img);title('平移后的图像');
%图像的镜像变换
for m=1:M
for n=1:N
new_img1(m,N-n+1)=img(m,n);
end
end
%图像的水平变换
for m=1:M
for n=1:N
new_img2(M-m+1,n)=img(m,n);
end
end
figure(2);
subplot(1,2,1);
imshow(new_img1);title('水平镜像变换后的图像');
subplot(1,2,2);
imshow(new_img2);title('垂直镜像变换后的图像');
%图像放大
A=1.5; %图像放大的倍数
X=round(M*A);
Y=round(N*A);
m=1;n=1;
for x=1:X
n=1;
for y=1:Y
new_img3(x,y)=img(round(m/A),round(n/A));
n=round(n+1/A);
end
m=round(m+1/A);
end
%图像缩小
B=0.8; %图像放大的倍数
X=round(M*B);
Y=round(N*B);
m=1;n=1;
for x=1:X
n=1;
for y=1:Y
new_img4(x,y)=img(round(m/B),round(n/B));
n=round(n+1/B);
end
m=round(m+1/B);
end
figure(3);
imshow(new_img3);title('放大1.5倍后的图像');
figure(4);
imshow(new_img4);title('缩小0.8倍后的图像');
%图像的旋转
ang=pi/3;
for m=1:M
for n=1:N
X=round(m*cos(ang)-n*sin(ang)+N*sin(ang));
Y=round(n*cos(ang)+m*sin(ang));
new_img5(X,Y)=img(m,n);
end
end
figure(5);
subplot(1,2,1);
imshow(new_img5);title('旋转后的图像');
subplot(1,2,2);
new_img5 = medfilt2(new_img5);
imshow(new_img5);title('旋转后经过中值滤波的图像');