matlab中二维图像的简单处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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('旋转后经过中值滤波的图像');

相关文档
最新文档