史蒂夫与MATLAB图像处理

图像处理的概念、算法和MATLAB

混叠和图像缩放-第3部分

今天我会结束我讨论如何混叠影响图像缩放和如何imresize函数试图阻止它。(这就是所谓的抗锯齿)。让我告诉你我们会在哪里。这是上次我给波带片图像。

Z = imzoneplate (501);imshow (Z)标题(“Z”)

这是当我们缩小Z被丢弃的样本。

Z4 = Z(1:4: 1:4:末端);imshow (Z4)标题(“Z4”)

这里是什么imresize(使用默认行为):

Z4_imresize = imresize (Z, 0.25);imshow (Z4_imresize)标题(“imresize (Z, 0.25)”)

在我开始之前描述的imresize方法抗锯齿,我应该说,有几种算法在图像缩放方法抗锯齿。这只是一个。它是基于经典数字信号处理的想法。

我将使用f [n]美元的符号是一个函数的离散变量n,美元和美元f (x)是一个连续变量的函数x美元美元。这是一种考虑图像调整问题,在理论上是有用的。为了简化讨论,我会谈的一维信号。(警告:人们在数字信号处理具有研究生背景可能会发现这个解释太简短了。其他人会发现它太jargon-y。我做我最好的。)

假设我们想把一个一维信号,f [n]美元,另一个一维信号有不同的采样率。

  1. 把discrete-domain信号,f [n],美元continuous-domain信号,f (x)美元。从理论上讲,这一步涉及使用continuous-domain过滤器,h (x)美元。你能想到的这一步的插值(对于一些选择h (x),美元的)。
  2. 转换continuous-domain信号,f (x),美元新discrete-domain信号,g [n],美元由抽样f (x)速度所需的美元:$ g [n] = f (nT)美元。

有一个问题上面的两步过程。如果采样率对g [n]美元从最初的采样率减少f [n]美元,那么过程容易混淆失真如果f [n]美元包含高频不能代表在较低的采样率。为了解决这个问题,让我们插入另一个步骤的过程。

  1. 把discrete-domain信号,f [n],美元continuous-domain信号,f (x)美元。
  2. f (x)美元通过一个低通滤波器去除高频组件所需的采样率会导致混淆失真。我们叫这个过滤器h_a美元(x)美元。
  3. 转换continuous-domain信号,f (x),美元新discrete-domain信号,g [n],美元由抽样f (x)速度所需的美元:$ g [n] = f (nT)美元。

一个理解的关键imresize方法是承认与连续两个过滤器过滤,在这种情况下h (x)和$美元h_a (x),美元可以取代一个滤波器的频率响应是原来两个过滤器的产物。第二个理解的关键imresize算法所需的抗锯齿滤波器频率响应,h_a美元美元(x),取决于我们如何改变采样率。如果我们减少原始信号,那么我们必须消除更多的高频h_a美元(x)美元。

更加紧凑地国家(同时挥舞着双手很积极),您可以使用一个continuous-domain过滤器同时完成插值和抗锯齿。

我来带你去看看这是如何工作的立方插值内核imresize在默认情况下使用。三次插值内核的代码:

函数f =立方(x) %看到钥匙,“立方卷积插值对于数字图像%处理,“IEEE声学,演讲,和信号%处理,ASSP-29卷,6号,1981年12月,第1155页。
absx = abs (x);absx2 = absx。^ 2;absx3 = absx。^ 3;
f = (1.5 * absx3 - 2.5 * absx2 + 1) * (absx < = 1) +…(-0.5 * absx3 + 2.5 * absx2 - 4 * absx + 2)。*……((1 < absx) & (absx < = 2));

(这段代码是imresize.m内部文件。)这里是插值的内核是什么样子:

图fplot (@cubic (-2.5 - 2.5),“线宽”,2.0)

这个函数imresize然后修改插值通过伸展出来。伸展因子直接取决于多少我们缩小原始信号。这是imresize修改插值内核的代码:

如果(< 1)& &(反锯齿)%使用修改内核同时插入和%平滑。h = @ (x)规模*内核(规模* x);kernel_width = kernel_width /规模;其他%没有反锯齿;使用修改的内核。h =内核;结束

(我不总是评论我的代码,但是我认为我做的好。

请注意,我们不修改内核日益增长的一个信号(规模> 1)而不是萎缩(规模< 1)。

这里有三个版本的立方插值内核:原来,缩小2倍的一个修改,修改一个萎缩的4倍。

h1 = @cubic;h1 h2 = @ (0.5 x) * (0.5 * x);h4 = @ (x) 0.25 * h1 (0.25 * x);fplot (h1 [-10 10],“线宽”,2)fplot (h2, -10 [10],“线宽”(2)fplot h4, -10 [10],“线宽”,2)传奇(“h_1 (x)”,“h_2 (x)”,“h_4 (x)”)

当我们以这种方式展开插值内核,插值计算平均像素值从一个更广泛的社区产生每个输出像素。是额外的平滑,它给我们提供了所需的抗锯齿效果。

这是imresize再次输出波带片的图像。

imshow (Z4_imresize)

只能看到附近的环中心。这是因为这些原始环空间频率较低,他们可以成功地使用只有四分之一采样率来表示。高频响了远离中心被平滑掉到一个坚实的灰色。

你可以自己试验imresize通过禁用抗锯齿。下面是如何收缩与抗锯齿关闭图像:

Z4_imresize_noaa = imresize (Z, 0.25,抗锯齿的、假);imshow (Z4_imresize_noaa)

给应得的学分,所使用的算法imresize本文的灵感来源于“通用过滤图像尺度改变,”戴尔舒马赫,在吗图形宝石三世,1994年摩根考夫曼。

你有其他的问题吗imresize吗?让我知道你的评论。




发表与MATLAB®R2016b

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。