zoukankan      html  css  js  c++  java
  • [数字图像处理]数字图像的有理数倍缩放(缩小与放大)

    1.序言

          根据上两节的内容,我们已经实现了整数倍的扩大与缩小。链接给在下面,有需要的就点吧。

           [数字图像处理]数字图像的整数倍扩大(数字图像插值)

           [数字图像处理]数字图像的整数倍缩小

           事实上,在缩小与放大图像的时候,很多时候需要非整数倍的变换,整数倍变换是很特殊的情况。在实现了整数倍的扩大与整数倍的缩小之后,就可以实现有理数倍的变换。

    2.图像的分辨率的有理数倍变换

     
           图像的分辨率的有理数倍变换,如上图所示。先进行U倍的扩大,然后再缩小D倍,那么,就实现了U/D倍的分辨率变换。这里值得说的是,U与D都是整数,其中↑U表示了零值插入操作,↓D则表示为降采样操作。我们将上面的图进行一个变换,可以得到下面的图。

           其中,

           2.1 图像的分辨率的有理数倍扩大(U>D)

           为了一些得到有理数倍扩大的有用结论。我们首先假设U=3,D=2,这样,就相当于1.5倍的扩大。此时,我们需要的理想滤波器的振幅特性如下所示。

    可以看到,当U>D的时候,所用的扩大操作所用的滤波器 的通带要比缩小操作的所用滤波器的通带要窄。所以,我们所需要的有理数倍扩大所用的滤波器如下所以。

         到此,我们可以得到如下两个非常有用的结论。
         ①:当U>D的时候,我们可以将直接当做使用。
         ②:当U>D的时候,缩小处理所用直接降采样法就可以了。(其理由是,已经很大程度上减小了混淆,没有必要在使用平均操作法)
         
         现在,使用线性插值法与直接降采样法,实现图像的1.5倍变换。 输入图像的分辨率为:512×512,其输出图像的尺寸为:768×768。(结果图片就不贴出来了,我直接上代码)。
     

           2.2 图像的分辨率的有理数倍缩小(U<D)

           同样的,为了得到一些有用结论。我们首先假设U=2,D=3,这样,就相当于2/3倍的变换(相当于缩小)。此时,我们需要的理想滤波器的振幅特性如下所示。

    可以看到,当U<D的时候,所用的扩大操作所用的滤波器的通带要比缩小操作的所用滤波器的通带要宽。所以,我们所需要的有理数倍扩大所用的滤波器如下所以。

         到此,我们可以得到如下两个非常有用的结论。
         ①:当U<D的时候,我们绝对不可将直接当做使用。(其理由是,的通带较窄,并不能减小混淆现象
         ②:当U<D的时候,缩小处理所用滤波器,将其进行U倍振幅调整,即。那么,调整过的滤波器的可以当做使用。但是,如果处理不当的话,会出现棋盘失真(关于棋盘失真的条件,我在本文的后面将会叙述)。

         现在,使用零次保持法(最邻近插值法)与平均操作法,实现图像的2/3倍变换。输入图像的分辨率为:512×512,其输出图像的尺寸为:341×341。(结果图片就不贴出来了,我直接上代码)。
     

    3.分辨率变换时候需要注意的几个问题

          3.1分离式滤波处理

          事实上,以上的实验,水平方向与垂直方向都是以相同的倍率变化的。所以,此时,我们使用二维滤波器,就可以实现。但是,很多时候水平方向与垂直方向的变化是不同倍率的。所以,为了实现这个变换,我们用一维滤波器来实现图像的分辨率的变换,如下图所示。
     
    首先,对于M×N的图像,先进行水平方向上逐列进行一维卷积,得到的图像是P×N的图像。然后,在垂直方向上逐行进行一维卷积,就可以得到P×Q的图像。若如此处理,则可以得到水平方向与垂直方向上的不同倍率变化。最为实验,我实现了水平方向上的1.5倍扩大与垂直放上想的2/3倍的缩小。
           输入图像的分辨率:512×512
           输出图像的分辨率:341×768
     
    上面是效果图,下面我贴出代码来。
     

          3.2棋盘失真

          我们将3个像素上的平均操作,振幅扩大调整两倍。将所得到的滤波器,用作2/3倍缩小的操作的滤波器使用,此滤波器如下所示。

    从振幅特性上,与我们所希望的滤波器具有相同的特性。我们使用这个滤波器,进行2/3倍缩小的操作,可以得到如下所示的输出。

            可以看到,画质非常的差,出现了棋盘失真。关于为何会出现棋盘失真,如下解释,首先,将所用滤波器进行多相分解(Polyphase decomposition),如下所示。

    我们得到了如上一个式子,根据这个式子,我们扩大操作的框图可以按照如下流程分解。

    按照上图,我们可以得到一个信息。由于R0与R1的最终输出值不一致,所以,这个滤波器的输出无法收敛,就像下图一样。

          所以,其输出就成了一个棋盘一样的输出。所以,期盼失真的出现的条件是,按照多相分解的结果,若每个部分的最终输出值不一致,会导致滤波器的输出不收敛,最终造成棋盘失真。为了避免棋盘失真,就应该使其每个部分一致。

          到此,我们就实现一幅图像的分辨率的有理数倍的缩放。

    参考文献
    貴家 仁志,“ディジタル画像の解像度変換 — 任意サイズへの画像の変換,” インターフェース,CQ出版,1998年6月
    貴家 仁志,“ディジタル画像の解像度変換 — 画像の拡大,” インターフェース,CQ出版,1998年4月
    貴家 仁志,“ディジタル画像の表現と階調変換,色間引きの原理,” インターフェース,CQ出版,1998年2月
    《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods




          原文发于博客:http://blog.csdn.net/thnh169/ 



  • 相关阅读:
    Python中把数据存入csv文件
    Python中把字典和值取出来
    scrapy输出请求状态码
    scrapy发送post请求获取cookie
    Python3 Unicode转中文
    Quartus13.0破解方法
    元音字母A的发音规则
    位bit——字节Byte???
    曾经的小孩在努力奔跑!
    如何看懂的时序图?
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3429245.html
Copyright © 2011-2022 走看看