当前位置:首页 > 代码 > 正文

matlabgui图像平移代码(matlab 图像平滑)

admin 发布:2022-12-19 15:35 171


本篇文章给大家谈谈matlabgui图像平移代码,以及matlab 图像平滑对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

matlab关于图像平移的一小段代码,求大神每句帮忙解释下,谢谢啦!

f=imread('hehua1.bmp');%读图片

[m,n,x]=size(f);%求图的维数

f=double(f);%转化为双精度数据

for i=1:20 %平移10次

mx=10*i;%x轴平移量,像素数

my=10*i;%y轴平移量,像素数

g=zeros(m,n,x)+255;%背境设为白色

g(mx+1:m,my+1:n,1:x)=f(1:m-mx,1:n-my ,1:x);%平移,取原图左上角赋给新图,原图坐标减少,像素减少,看起来新图向右下平移

%g(1:m-mx,1:n-my ,1:x)=f(mx+1:m,my+1:n,1:x);%平移,取原图右下角赋给新图,原图坐标增加,像素增加,看起来新图向左上平移

figure;%生成一个图窗

%imshow(g);%显示双精数据图形

imshow(uint8(g));%双精转为uint8,再显示图形

end

求MATLAB GUI 环境下 图像处理图像的平移,任意角度的旋转,缩放和翻转,仿射变换等的源代码

该gui函数基本上包括图像处理里面的最基本处理,相当于一个小型photoshop。

比如读取文件,

几何变换中的垂直镜像,平移,旋转,缩放;

正交变换的DFT,FFT,DCT,DST,DHT,DWashT;

灰度处理中的反色,直方图均衡,全局线性变换,分段线性变换,指数非线性变换,对数非线性变换;

图像增强里面的加噪声,平滑,锐化,伪彩色增强;

图像分割里面的灰度阈值法,Robert,Laplace,sobel,prewitt,canny算子边缘检测法;

图像恢复里面的直接逆滤波,维纳滤波;图像编码里面的霍夫曼编码,行程编码-

matlab 图像平移

%图像平移(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 (Tx0)

inImage=imcrop(inImage,[abs(Tx),1,m-abs(Tx),n]);

[m, n] = size(inImage);

Tx=0;

end

%move y

if (Ty0)

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;

打字不易,如满意,望采纳。

用MATLAB自带的函数对图像进行旋转、平移的问题

最后一行,写成这样和程序原意相不相符

transa=maketform('affine',[scale_x delta_x 0; scale_y delta_y 0;0 0 1 ]);

matlab中的图像平移

第一,既然是平移,那么就跟交换一样{a=c,c=b,b=a},交换c和b的值,必须有一个中间变量a,你的代码中没有。

第二,matlab图像平移,b(1:1+y,1:n)=a(m-y:m,1:n);

这句话,错误太多,你的变量i呢,哪去了,不然怎么随循环变化。呜呜,,试试matlab矩阵交换是否可行,我本地无法测试,就不帮你试了。

matlabgui图像平移代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于matlab 图像平滑、matlabgui图像平移代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/10571.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载