在Matlab中将一幅图片的中心设置为x-y轴坐标原点

  • Post author:
  • Post category:其他


我们知道,一幅图像由许许多多的像素组成,这些像素可以理解为一个矩阵(假设该矩阵为img)中的元素。但是在matlab中索引是从1开始,并且坐标原点位于左上角,这里我们将此时的坐标轴记为i-j坐标轴。使用img(i,j)表示其中的任何一个像素。

也许我们会觉得这样也挺好呀,对图像操作没有什么问题。但是我们要想遍历整个图片进行一些操作的时候,我们需要两个for循环。对于matlab而言,运行for循环会大大降低程序的运行效率。。同时,我们在做图像重建的时候,经常要用到坐标原点位于图像中心的x-y坐标轴(重建算法的公式中常用x-y坐标以及极坐标),这样比使用i-j坐标轴省去很多麻烦,能更好的还原算法的推导过程。

roi=N*[-0.5 0.5 -0.5 0.5];%设置感兴趣区域,N为图片的大小
hx=(roi(2)-roi(1))/(N-1);%roi(1)和roi(2)表示图片在x轴上的最小值和最大值
hy=(roi(4)-roi(3))/(N-1);%roi(3)和roi(4)表示图片在y轴上的最小值和最大值
xrange=roi(1)+hx*[0:N-1];
yrange=flipud((roi(3)+hy*[0:N-1])');
x=ones(N,1)*xrange;%x坐标
y=yrange*ones(1,N);%y坐标

通过上述代码,就可以将一幅图片使用x-y坐标进行表示,我们在对每个像素继续操作时(一般都是使用点乘等),可以对所有的像素同时进行,代替了两个for循环,在一定程度上提高了代码的运行效率。例如求图像中的每一个像素距离图像中心的距离:r=sqrt(x.^2+y.^2),这个计算结果是一个256*256的矩阵,也就是我们所求的每一个像素到图像中心的距离。



版权声明:本文为ZHLY0307原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。