• matlab练习程序(矩形变换为圆)


    最近对图像坐标的变换很感兴趣啊,这次是将一张图像变换为圆形。

    变换原理就是按变换前后像素到圆心的距离按比例缩减就行了。

    改变x,y方向上的系数,应该还可以变换为椭圆,不过我还没有尝试。

    注意我这里相当于缩小图像了,所以用的是正向插值,如果想生成一个大圆,还是需要逆向插值的。

    原图如下:

    处理后效果:

    matlab代码如下:

    clear all;close all;clc;
    
    img=imread('lena.jpg');
    [h w]=size(img);
    imshow(img);
    
    imgn=zeros(h,w);
    cenX=w/2;
    cenY=h/2;
    
    newR=w/2;           %圆的半径
    for y=1:h
        for x=1:w
       
            r=sqrt((x-cenX)^2+(y-cenY)^2);  %当前像素到图像中心的距离
            ang=atan2(y-cenY,x-cenX);
         
            if ang>=pi/4 && ang<=3*pi/4 || ang<=-pi/4 && ang>=-3*pi/4
                R=sqrt(cenY^2+(x-cenX)^2);  %当前像素和图像中心连线上,图像边缘像素和图像中心的距离
            else
                R=sqrt(cenX^2+(y-cenY)^2);
            end
           
            ss=r/R;         %比例系数
            xx=round((newR*ss*cos(ang)+cenX));
            yy=round((newR*ss*sin(ang)+cenY));
           
            if xx>=1 && xx<=w && yy>=1 && yy<=h
                imgn(yy,xx)=img(y,x);
            end
           
        end
    end
    
    figure;
    imshow(imgn,[])
  • 相关阅读:
    2021.6.7
    2021.6.4
    2021.6.3
    2021.6.2 团队第二阶段冲刺第十天
    2021.6.1 团队第二阶段冲刺第九天
    2021.5.31 团队第二阶段冲刺第八天
    2021.5.30 团队第二阶段冲刺第七天
    逻辑卷的使用
    磁盘阵列
    磁盘配额
  • 原文地址:https://www.cnblogs.com/tiandsp/p/3870290.html
Copyright © 2020-2023  润新知