魔术内核

2021-03-22 09:59:49

考虑将锐化过滤器{-1/4,+ 3/2,-1 / 4}应用于上面考虑的图像,通过使用魔术内核作为常规尺寸过滤器略微模糊。卷积总体{-1/32,0,+17 / 16,0,-1 / 32}内核。这不是Δ的函数,但它非常接近它:现在有±1的左右,有-3%在位置±2的位置,相应的+ 6%的位置0.Therather而不是魔术内核所带来的轻微模糊,我们现在具有原始图像的非常轻微的残余锐化。

2013年,我制作了以下ansatz:缩小图像,我们应该应用魔术内核来确定重新采样权重,然后在缩小规模之后,我们应该应用“夏普”滤波器{-1/4,+ 3/2,-1 / 4}结果。这是Magic Kernel Sharp 2013缩小化算法。

立即明确表示,这导致了上方的跨越式{-1/32,0,+17/16,0,-1 / 32}在致力于统一的缩小系数的极限中。

现在让我们在Facebook在练习中的魔术内核夏普算法的应用程序如何详细说明,以调整上传的照片大小。

让我们表示输出图像(以像素)的每个尺寸的比率(以像素为单位)的比例表示到TheInput图像的比率,使得k< 1对于缩小化(减少)和k> 1用于upsizing(放大)。我们在这里我们可能想要在任一方向上打开图像的情况,尽管x和y的k的不同值可以实现缩短在实践中,如果需要。为简单起见,让我们只考虑图像的一个维度; SINCETECE X和YKERNELS明显可分离,我们依次重复调整调整大小算法的每个Dimension。

对于缩小化,我们将许多输入像素映射到一个输出像素。移出像素位置,例如,I(积分),天真对应于InputPixel位置y = I / k,这通常不会是integral。对于示例,如果我们正在减少210像素的ImageDown到宽度为21像素,Thek = 1 / 10.na,我们可以VisualizedOutput像素位置0对应于输入像素位置0,输出像素位置1对应于输入像素位置10,以及等等,通过输出对应于输入像素位置200的像素位置20.(在实践中,对于像素块本身而言,本说明是正确的,并且我们考虑给定像素的“位置”以击败像素块的中心,所以我们实际上必须将HALF - 像素偏移应用于输入和输出像素位置:Y + 1/2 =(i + 1/2)/ k.how,因为这个例子,让UIGNORE为简单起见,为了简单地,可以确定“像素网格的起始点。)

对于每个这样的输出像素I,我们将Magic Kernelm(k y - i)覆盖到输入图像上。对于中间输出位置I = 10在我们的示例中,内核在Y = I / k = 100处的MaximumCurmurs,对应于上面的函数M(x)中的x = 0;它是零福音< (I - 3/2)/ k = 85,相应的TOX< -3/2在函数m(x)中;它是零fory> (i + 3/2)/ k = 115,相应的TOX> +3/2在函数m(x)中。

在内核非零的Y空间(输入图像空间)中的每个整体位置处,非正规化权重被设置为内核的值,即。 m(k y - i).g。在Y = 90,它设置为汤姆(90/10-10)= m(-1)= 1/8。

然后,我们总结所有非全体化的权重,并使它们归一化以使其对单位的总和。然后使用一组权重来计算该输出Pixel的强度,作为给定输入像素的强度的加权总和。(注意,对于二维图像,每个维度中的每个输出像素的重量只需要计算一次,并且在调整大小的该阶段中重复使用行或列的漏洞。)

在使用魔术kernelhas的缩小规模之后,然后通过简单的三点夏普2013卷过滤器{-1/4,+3/2,-1 / 4}(在每个方向上)来卷积结果以产生最终的内核2013年缩小图像。

对于Upsizing,概念性地,我们仍然应用魔术内核2013枚核,但实际实现看起来有点不同。在这种情况下,每个输入对应于许多输出像素。因此,我们想要将魔术内核用作“插值过滤器”,除了它只需使用两个最近的插值样本,正如我们通常在数学中所做的那样,我们实际使用三个样本(因为主题内核的支持是三个单位)。对于每个输出位置,我们将映射回输入空间,并将魔术内核(一般非积分)的位置居中。对于位于内核的支持内的三个输入样本中的每一个,我们读取了M(x)的值,并将其用作贡献的单一化重量该输入像素对给定的输出像素。

那么尖锐的步骤怎么样?从上面可以清楚,它必须应用于魔术kernelm(x)已应用的相同空间中,因为它是忒克雷斯的卷积和夏普2013内核CloseTo一个Delta函数,并且卷积只有在相同的空间上定义了函数时才能意识到。在这种情况下,这是输入空间 - 而不是输出空间,因为它用于缩小规模 - 因为它位于我们应用的输入空间中m(x)。这意味着我们必须首先将TheThree-Tap 2013内核应用于输入图像,然后在魔术内核上提升结果。这两种操作的组合是题为Quall 2013 Upsizing算法。另一个非常有用的建筑物题材内核的产品在Facebook内的数量中出现,以创建模糊的版本 - 在某些情况下,令人震惊。

我很快意识到,我们可以将魔术内核UpsizingKernel作为模糊基金 - 在这种情况下,在原始图像空间中应用,具有与输入图像相同的尺寸。通过指定因子k容易控制模糊量。通过指定因子k容易控制模糊量与上面所示的Canonicalform M(x)相比,魔术内核在位置空间x中放大; k大于1的任何值,大致,粗略地,横切输入像素是“模糊的”k输出像素,因为我们知道全连续功能M(x)的标准偏差为1/2,因此采样滤波器的标准偏差约为k / 2,因此Atwo标准偏差“宽度”将是大约k像素。

对于k小于1,我们需要更加谨慎:k→2/3对应渐近,没有模糊,因为ScaledMagic内核的支持小于K&lt的值的interion-pixel间隔。 2/3。在此工作,仍然具有一个方便的“模糊”参数B,对所有正面B有意义,我们可以在(B = 0,k = 2/3)之间线性插入(b = 1,k = 1)对于All0< B< 1,然后简单地定义K = B for B> 1.(通过该定义,对于B的所有正值,两个标准偏差“宽度”仍然大约等于B。)

这种“魔法模糊”算法从一小款模糊到巨大的(和无限)模糊的速度,最佳的质量和结果的平滑度。(计算地,无论是短暂的摘机还是硬件加速度,大量模糊工作高效 :对于Blur的大值,任何模糊内核的支持很大,并且对于某些尺度应用程序的支持非常高。)