转自:https://www.cnblogs.com/tiandsp/p/3870290.html
最近对图像坐标的变换很感兴趣啊,这次是将一张图像变换为圆形。
变换原理就是按变换前后像素到圆心的距离按比例缩减就行了。
改变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:hfor x=1:wr=sqrt((x-cenX)^2+(y-cenY)^2); %当前像素到图像中心的距离ang=atan2(y-cenY,x-cenX); if ang>=pi/4 && ang=1 && xx=1 && yy