我正在编写自定义的Core Image滤镜,很难真正理解extent
的{{1}}方法的CIKernel
参数。
到目前为止,我在所有文档和WWDC谈话中都将其描述为“内核定义域”,因此内核所产生的区域会产生有意义的非零结果。
根据该定义,我将假定:卷积核的输出范围与输入图像的范围相同,因为卷积总是将多个输入值组合为一个 输出值。但是在我发现的示例中以及从诸如apply
之类的内置内核的行为观察中,输出范围始终大于输入范围(取决于卷积内核的大小)。
我不明白为什么。为什么内核应该为原始输入域之外的像素产生结果?
答案 0 :(得分:0)
在输出范围的定义下,输入图像和内核相交的任何输出像素都是有效像素。对于宽度为2*n+1
像素的内核,此定义在图像的两边都添加了n
像素。
但是还有其他可能的定义。有时,您只需要结果部分与内核完全重叠的输入图像即可。在这里,我们从图像的两面减去n
个像素。
但是,当然,在图像处理中最常见的定义是输出图像与输入图像具有相同的大小。如果图像在处理过程中没有改变尺寸,这将非常有用。