问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用MATLAB掌握图像平移、图像旋转和图像缩放的基本原理与实现方法

发布网友 发布时间:2022-04-24 22:17

我来回答

3个回答

热心网友 时间:2023-10-13 02:11

%图像平移(1)
F=imread('p2.bmp');
se = translate(strel(1), [0 20]);
%参数[0 20]可以修改,修改后平移距离对应改变
J = imdilate(F,se);
figure;
imshow(J,[]);title('右移后图形');

%图像平移(2)
function outImage=immove(inImage,Tx,Ty)
[m, n] = size(inImage);
Tx=fix(Tx);
Ty=fix(Ty);

%move x
if (Tx<0)
inImage=imcrop(inImage,[abs(Tx),1,m-abs(Tx),n]);
[m, n] = size(inImage);
Tx=0;
end

%move y
if (Ty<0)
inImage=imcrop(inImage,[1,abs(Ty),m,n-abs(Ty)]);
[m, n] = size(inImage);
Ty=0;
end

outImage = zeros(m+Ty, n+Tx);
outImage(1+Ty:m+Ty,1+Tx:n+Tx) = inImage;

%图像旋转
%X,Y为其行列数
Image=imread('02.jpg');
Image=rgb2gray(Image);
angle=30;
%角度任意的一个数 表示30度
pai=3.14;
Angle=pai*angle/180;
%转换一下角度的表示方法。
[X,Y]=size(Image);

%原图显示
subplot(2,1,1);
imshow(Image);
title('原图像');

%计算四个角点的新坐标,确定旋转后的显示区域
LeftTop(1,1)=-(Y-1)*sin(Angle);
LeftTop(1,2)=(Y-1)*cos(Angle);

LeftBottom(1,1)=0;
LeftBottom(1,2)=0;

RightTop(1,1)=(X-1)*cos(Angle)-(Y-1)*sin(Angle);
RightTop(1,2)=(X-1)*sin(Angle)+(Y-1)*cos(Angle);

RightBottom(1,1)=(X-1)*cos(Angle);
RightBottom(1,2)=(X-1)*sin(Angle);

%计算显示区域的行列数
Xnew=max([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])-min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)]);
Ynew=max([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)])-min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]);

% 分配新显示区域矩阵
ImageNew=zeros(round(Xnew),round(Ynew))+255;

%计算原图像各像素的新坐标
for indexX=0:(X-1)
for indexY=0:(Y-1)
ImageNew(round(indexX*cos(Angle)-indexY*sin(Angle))+round(abs(min([LeftTop(1,1),LeftBottom(1,1),RightTop(1,1),RightBottom(1,1)])))+1,1+round(indexX*sin(Angle)+indexY*cos(Angle))+round(abs(min([LeftTop(1,2),LeftBottom(1,2),RightTop(1,2),RightBottom(1,2)]))))=Image(indexX+1,indexY+1);
end
end

%显示
subplot(2,1,2);
imshow((ImageNew)/255)
promp=['旋转角度为:' int2str(angle) '的图像']
title(promp);

%图像缩放
function y=resize(a,mul,type)
%****************************************************
%a:输入图像灰度值
%mul:缩放倍数
%type:1表示最邻近法,2表示双极性插值法
%画出缩放后图像并返回其灰度值
%****************************************************
[m,n]=size(a);
m1=m*mul;n1=n*mul;
%****************************************************
if type==1
for i=1:m1
for j=1:n1;
b(i,j)=a(round(i/mul),round(j/mul));
end
end
elseif type==2
for i=1:m1-1
for j=1:n1-1;
u0=i/mul;v0=j/mul;
u=round(u0);v=round(v0);
s=u0-u;t=v0-v;
b(i,j)=(a(u+1,v)-a(u,v))*s+(a(u,v+1)-a(u,v))*t+(a(u+1,v+1)+a(u,v)-a(u,v+1)-a(u+1,v))*s*t+a(u,v);
end
end
end
%*****************************************************
b=uint8(b);
imshow(b);
title('处理后图像');
y=b;

参考资料:http://hi.baidu.com/kr1423/blog/item/0006a8b7261c1df330add12e.html

热心网友 时间:2023-10-13 02:11

愕,06通信几班的啊。。高。。

热心网友 时间:2023-10-13 02:12

clear;
close all;
img1=imread('bmoban.jpg');%读取图像
img1=rgb2gray(img1);%转换为灰度图
figure,imshow(img1);
imwrite(img1,'a1.jpg');

se=translate(strel(1),[20 20]);%%%%%%平移
img2=imdilate(img1,se);
figure,imshow(img2);
imwrite(img2,'a2.jpg');

img3=imrotate(img1,90);%%%%%%旋转
figure,imshow(img3);
imwrite(img3,'a3.jpg');

img4=imresize(img1,2);% %%%%%缩放
figure,imshow(img4);
imwrite(img4,'a4.jpg');
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? matlab 图像平移 为什么matlab中imresize和opencv的Cvresize的结果不同 MATLAB interp2和imresize函数的区别是什么? 关于matlab imresize函数 里面都是插值法 matlab 怎么创建文件夹 如何用matlab在已知文件夹中创建文件? 如何配置MATLAB 以便使用resize.cc matlab2014如何设置resize 在新浪微博里找人,输入对方的昵称为什么找不到啊?输入对方账号也不行?这怎么办?怎么关注? 我想做音乐相册怎么做 请问音乐相册怎么做? 信用卡分期购买手机额度不够怎么办 我想分期手机 但是额度不够怎么分期 linux系统下如何打开以IMG文件?什么是BOOT用户 linux unyaffs 解压后目录在哪儿 Linux下如何解包打包boot.img 在linux中解压A60+线刷包的.img文件是怎么提示段错误呢,求大神指导 虚拟机Linux下怎么解压ISO文件 在linux下怎么解压cpio格式文件? 在linux下怎么解压cpio格式文件 matlab中使用imresize函数时出错 MATLAB GUI界面大小能否自动适应 如何改变matlab中这个对话框的大小 Matlab中各种对话框的字体大小可以设置吗 matlab traincascadeobjectdetector怎么训练自己的检测器 求高手帮我写一个MatLab图像缩放的程序,不要调用imresize函数,不过每一句程序后面有注释。 如何在matlab中由一行两列数据生成10行4列?? MATLAB软件如何统计Excel数据里面某一列中某一个数出现的次数?求代码 请教,Matlab如何将waitbar嵌入到gui主窗口中去 不想用腾讯黄金红包怎么关闭 怎么注销QQ上实名认证的红包和财付通,想重新绑定另一张卡 QQ红包绑定的是身份证号码,怎么才能解除 360驱动打印机扫描在哪找 酝炭治制筛姐腐鸣掺芥诲饰掂暴阎齿哼肃臣砖乙 QQ实名认证游戏实名认证老是失败,已经检测是成人,我认证时候老是卡在... 返回关闭填写资料验证返回验证结果身份验证失败可能是系统处理超为啥我的qq密保手机总是验证不了,总是_百度问一问 打印机打印显示发生错误需要修复是怎么回事r 如何写软件销售的PPT文档呀? 三星打印机打印时提示遇到错误是怎么回事 七大步骤:如何快速宣传推广自己的软件