医学图像处理 | 几何变换

 上一期:医学图像处理 | 图像复原(三)

除了在之前介绍图像复原中滤波的手段以外,图像的几何变换也是图像复原中的一部分。这一期我们就从几何变换的角度来讲图像复原!

   那什么是图像的几何变换呢?举几个例子,我们将图像在背景中平移,将一张方方正正的图片任意拉伸蹂躏成一幅长方形的图像,P图时将图片旋转等等这都是图像的几何变换。 

       回归到数学角度,什么是几何变换?其实就是空间坐标系的变换!一看下面两张图大家就知道我的意思了。

医学图像处理 | 几何变换

医学图像处理 | 几何变换

 

      即通过一个函数,将w-z坐标系变换为x-y坐标系。

      而我们依据这个原理去处理图片时则是以矩阵方程的形式来呈现的。

医学图像处理 | 几何变换

       这里的T我们称之为仿射矩阵。

      当应用于图像的几何变换时,其一般的形式有:

医学图像处理 | 几何变换

 

一、怎么编写代码?

 

       到这里有的同学可能就要问了。比如我要将一个图像拉伸,我设计出了这样一个仿射矩阵,那么实际在MATLAB中编写程序时怎么写呢?是将每个像素提取出来进行做一个行列的二次循环吗?然后用if语句来限制各种条件吗?

       对于这一点,小白明确的告诉你,这样的思路虽然正确,但是编写代码时会遇到很多困扰。就比如,拉伸的过程中你可能只需沿X方向拉伸1.3倍,对于一个坐标为(13,37)的像素点,那么变换后的X方向坐标为13*1.3,肯定不是整数,但我们的图像像素点的坐标又必须为整数,那怎么办呢?要按照什么规则进行取整呢?效果会有区别吗?除此之外基本是还有一堆的坐标细节处理等着你。这就是小白的亲身经历!所以我建议若不是无聊想提升自己千万不要走这条路!很坑!

 

二、取巧!!

 

       经过一番寻找,小白找到了一个函数,可以帮你轻松解决以上问题!

      affine2d和imwarp函数起来就不用担心计算处理的问题的。我们就可以心思放在仿射矩阵的涉及上了。但如果matlab版本老的话就是maketform和imtransfrom。

      两者语法如下: 

                         tform = affine2d(A)

       用此句来预处理仿射矩阵A,也就是我们表达式里的T。

B = imwarp(f,tform)

       用此句将输入的图像与我们处理了的仿射矩阵进行相乘得到几何变换后的图像。

 

       总结一下,意思就是矩阵计算中的细节就让这些函数内部功能去帮我们解决。我们只管如何按自己的目标设计T就行。

       大家可以在工作区点击tfrom也可以看到自己设计的仿射矩阵。

医学图像处理 | 几何变换

 

更多干货请关注公众微信号:医电小白的进阶之路

医学图像处理 | 几何变换