Reading Book Notes 4

接着上节中的内容进行记录~~这节将说到几何变换以及色彩空间变换

图像的几何变换不改变图像的内容,只是将原始坐标位置由映射函数进行映射后得到对应的新坐标,然后将像素值进行拷贝,由此便带来了如何进行像素值对应的问题。常用的有最近邻插值,线性插值,双线性插值,双三次插值。

几何变换

仿射变换:不改变线上所有点及其点间的相对位置比例,但可能会改变角度及长度。如缩放,平移,旋转,倾斜以及映射均为仿射变换。这类变换均可以使用同样的仿射函数,只是各变换矩阵不同而已。对于缩放有其函数resize();其他的几类均可以使用类似的模式进行使用。具体见下图1所示:

Reading Book Notes 4_第1张图片
图1

warpAffine()是放射变换函数,对于不同的变换,设置不同的变换矩阵,以及变换后的缩放比即可。

透视变换

利用一个3x3的变换矩阵,对源图像进行操作,直线仍旧会是直线,但是比例会发生改变。其是根据输入点以及设定到的输出点相对应后,进行对应计算来形成整张原图的坐标对应。相比于仿射变换,其变换矩阵要更复杂一些,可以利用已有的函数来得到矩阵元素,并进行相应的变换~如下图2,图3所示:

Reading Book Notes 4_第2张图片
图2


Reading Book Notes 4_第3张图片
图3

图像重构(留): 利用一张掩膜图片对缺损的图片进行修复,或者去除多余信息。函数如下图4所示:

Reading Book Notes 4_第4张图片
图4

降噪:在平滑滤波中,说到了一些可用来进行降噪的方法,如高斯滤波,中值滤波等,同时opencv中还提供了另外的降噪方法——非局部均值和TVL1算法。

非局部均值:在对某个像素点处理时,不同于均值滤波器,取其所在核下的像素值的均值,非局部均值的方法是用一个子窗口去扫描整张图,若该子窗口下的图片区域与该像素点所在区域相似度较高,则将该子窗口作为该像素的一个邻域,最后该像素点的输出值为所有邻域窗口像素值的均值。

注:对于TVL1算法,目前还没去理解过,先留在此吧~自己在降噪的处理中很少用到这类方法,现将对应的函数帖于此,以便后面查找,如图5:

Reading Book Notes 4_第5张图片
图5

下面来补充一下在几何变换中会涉及到的另一个问题:灰度插值。设想一下,输入的图像坐标位置(x,y)为整数,但经过相应变换后,其对应的坐标位置可能不为整数,其灰度值为空。故,在进行几何变换时,除了要进行其本身的几何变换外,还要进行灰度级插值处理。
注:因为用图来进行描述更易于理解,故见下图6所示:

Reading Book Notes 4_第6张图片
图6

以对源图进行缩放为例,在进行几何上形状的变换后,第二步要进行的便是灰度值的对应。对于从目标图像到源图像,若转换后的坐标值正好是整数,则可以直接对应,若是浮点数则采用相应的插值方法来得到对应的灰度值。最近邻是一种最简单但效果不佳的插值方法,方法会有明显的马赛克现象,缩小会有明显的失真;双线性的效果比最近邻要好;双三次可以得到更为平滑的边界。

注:具体的操作示例等以后再贴上吧


各色彩空间之间的转换

色彩空间:人眼对于色彩的识别是比较敏感的,在不同的用途中转换成不同的色彩空间有利于对图像进行处理。主要的色彩空间有RGB(常用于显示器系统但不太利于处理图像),HSI/HSV[色调,饱和度,亮度](其更符合人的视觉特性),CMYK[青色,品红色,黄色,黑色](印刷色彩模式)
注:因为个色彩空间是同一物理量的不同表示,所以可以对其进行转换。
       RGB模式是一种发光的色彩模式,如:在暗室内仍然可以看见屏幕上的内容;CMYK是一种依靠反光的色彩模式,需要有外界的光源,如:我们在暗室中无法看清报纸上的字。

文中还提到了其他的一些色彩空间,我对这章的内容只是作了一个大致的了解,因为这些色彩空间的应用选择,需要根据具体问题具体分析,也就不在这儿空谈了罢~
具体的转换方式则是调用一个函数cvtColor()即可,另外通常在处理时需要将通道进行划分后再合并,在这儿便利用到split()和merge()函数.。 具体的代码等后续再贴上吧~




你可能感兴趣的:(Reading Book Notes 4)