专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 其他开发语言

求简单的matlab代码。解决办法

发布时间:2011-06-30 07:26:20 文章来源:www.iduyao.cn 采编人员:星星草
求简单的matlab代码。
求一个通过matlab的图像坐标变换代码,公式如下图所示:

其中 x,y为原来图像的坐标,x',y’为变换后的图像坐标,参数m已知。
要将得到的变换后的图像保存下来。

------解决方案--------------------
假设你的原参数m是1*8的vector,图像是2d图片

C/C++ code

% 分割分子分母的参数矩阵
matx = m(1:3);
maty = m(4:6);
matd = [m(7:8),1];
% 读取原图
oldimg = imread('test.jpg');
% 新图
newimg = [];
% 坐标变换
for x = 1:size(oriImg,2)
    for y = 1:size(oriImg,1)
        tempvec = [x,y,1]'; % 临时变量
        newx = floor((matx*tempvec)/(matd*tempvec)); % 新x坐标并取整
        newy = floor((maty*tempvec)/(matd*tempvec)); % 新y坐标并取整
        newx = max(1,newx); % 保证x下标从1开始
        newy = max(1,newy); % 保证y下标从1开始
        newimg(newy,newx) = oldimg(y,x); % 设置新图像(y',x')的值为原图(y,x)的值,注意顺序
    end
end
% 转换为unsigned int8图像,像素值[0,255]
newimg = uint8(newimg);
% 保存新图片
imsave('newimg.jpg','jpg');
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: