图像变形

原创 2013年12月04日 23:04:15

[x’,y’]=f([x, y])为像素坐标的一个映射,实现f所表示的图像形变。

f的逆映射为:

1


其中:

,

都是中心归一化坐标,请先进行转换

clear;   %此题是用双线性插值法实现图像缩放  
I=imread('H:/数字图像处理/13_input.jpg'); %读入原图像,只需将此处的文件换成要变换的图片即可 %图像属性  
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
[rows,cols,coms]=size(I); %图像的高和宽
Out = uint8(zeros(rows,cols,coms));
RR = uint8(zeros(rows,cols));
GG = uint8(zeros(rows,cols));
BB = uint8(zeros(rows,cols));
for x=1:cols-1
    xc=(x-0.5*cols)/(0.5*cols);
    for y=1:rows-1
        yc=(y-0.5*rows)/(0.5*rows);
        r=sqrt(xc*xc+yc*yc);
        s=(1-r)*(1-r);
        if(r>=1)
            orix=xc;
            oriy=yc;
            a = double(uint16(orix*0.5*cols+0.5*cols));                    
            b = double(uint16(oriy*0.5*rows+0.5*rows));
            RR(y,x)=R(b,a);
            GG(y,x)=G(b,a);
            BB(y,x)=B(b,a);
        else
            orix=cos(s)*xc-sin(s)*yc;
            oriy=sin(s)*xc+cos(s)*yc;
            a = double(uint16(orix*0.5*cols+0.5*cols));                    
            b = double(uint16(oriy*0.5*rows+0.5*rows));
            RR(y,x)=R(b,a);
            GG(y,x)=G(b,a);
            BB(y,x)=B(b,a);
        end
    end
end
Out(:,:,1) = RR;
Out(:,:,2) = GG;
Out(:,:,3) = BB;
imshow(I),title('原图');
figure;
imshow(Out),title('修改图');


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

图像变形课件

  • 2014年05月30日 19:29
  • 2.24MB
  • 下载

Android捕捉图像后在SurfaceView上变形显示问题的处理

我们在Android中经常会使用SurfaceView编写自定义的摄像头,可是有的时候会经常会出现图像的变形,我们就会很郁闷的问这到底是为什么呢?其实这个最根本的原因是SurfaceView和PreV...

图像相关变形处理的算法描述

  • 2010年11月17日 17:36
  • 786KB
  • 下载

基于 face++的人脸检测,解决了 camera 预览变形,图像方向不对等问题.

基于 face++的人脸检测,解决了 camera 预览变形,图像方向不对等问题.

图像变形作业 MFC

  • 2013年10月08日 20:37
  • 3.97MB
  • 下载

图像变形技术

  • 2014年07月28日 09:22
  • 5.83MB
  • 下载

Android 使用变形矩阵实现可以拖拽,缩放,旋转的图像

上篇博文介绍了变形矩阵的一些用法,所以这篇博文就结合变形矩阵来实现一个可以拖拽、缩放、旋转的图像吧。首先,我们就继承ImageView来实现我们的自定义View。...

可变形图像配准框架

  • 2016年12月24日 11:13
  • 1.35MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图像变形
举报原因:
原因补充:

(最多只允许输入30个字)