图像和复数在哪里以及如何相遇?

信息处理 图像处理 图片 复杂的
2022-02-21 06:10:35

我正在尝试实现一个 Gabor 滤波器组。Gabor 滤波器使用一个复杂的函数。像 Gabor Filter 这样的过滤器是如何对图像进行操作的?

复数代表整个图像还是仅代表一个像素?

图像是复数的二维数组吗?

3个回答

不,它不是复数,而是灰度图像的每个像素的实数和标准 RGB 图像的每个像素的 3 个实数,标准 RGB 图像应该是 N × M 像素的矩阵存储在给定的适当存储类中技术和编程语言,例如 C 中的数组类型。

灰度数字图像表示为 2D 数字数组,每个数字表示图像在给定像素处的强度,传统上以 [0,255] 之间的 8 位整数表示,浮点实现也以 [0,1] 表示。

彩色图像有多种处理方式。最基本的方法是使用RGB约定用其光学成分(例如红色、绿色和蓝色)来表示每个像素。这些值也大多是 [0,255] 中的 8 位或 [0,1] 中的浮点值。

在过去,彩色图像也是通过调色板处理的,我不想在这里提及。图像还有其他表示形式,例如 HSV、YUV、YIQ、YPbPr、YCmCr(模拟和数字)编解码器、商业和广播应用程序,但与您的问题没有太大关系。

请注意,RGB 三元组也可以附加第四个字节,称为alpha通道,某些应用程序可以使用它

此外,较新的成像标准允许每个颜色分量超过 8 位。

假设你有两个过滤器,he(x)ho(x),当您将它们应用于图像时,您会得到两个输出,

ge(x)=(fhe)(x)
go(x)=(fho)(x)

现在说这些过滤器有一些特殊的数学属性,比如he(x)响应均匀的功能和ho(x)响应奇数特征,它们的组合响应幅度为ge(x)2+go(x)2它描述了局部图像强度。

在这种情况下,将过滤器组合成单个值过滤器会更容易。那是,

h(x)=he(x)+iho(x)

然后你可以做一个过滤操作

g(x)=(fh)(x)

你从中得到

ge=(g(x))
go=(g(x))
A=ge(x)2+go(x)2=|g(x)|
ϕ=atan2(go(x),ge(x))=arg(g(x))

所以你看,把两个滤波器放在一个复值滤波器中,可以对它们之间的关系进行编码,特别是在幅度(它们的组合能量)和相位(它们的响应之比)方面。它说取复杂滤波器响应的绝对值是一个有意义的量,正如论证一样。

其他一些表示使用更多的虚数,例如四元数,以包含两个以上的过滤器。有些具有矩阵或向量值过滤器。所有这一切都是为了说明滤波器输出与其组合幅度之间存在某种关系。

您可以拥有可以用复值像素表示的图像,例如参见Blind deconvolution of noise complex-valued image通过类似傅里叶的成像系统获取的一些图像也可能很复杂。一个例子是医学 MRI 成像,但您也可以在地震数据中找到它。

傅里叶变换、复小波或拉普拉斯金字塔等许多处理方法都可以将真实图像转换为复值图像。可以使用复数微分滤波器相位一致性来检测边缘或推断纹理参数。优化算法是为此类复杂实例设计的:A Majorize-Minimize Memory Gradient Method for Complex-Valued Inverse Problems

如果你想玩数学,你可以通过在 base 中构造数字来将自然图像编码为单个复数256并将一半像素放在实部,另一半放在虚部,因为C大于[0,255]M×N. 但这实际上是没有用的。

所以:

  1. 一个完整的图像可以用一个复数表示,但没用
  2. 许多图像实例在每个像素处可能具有复杂的值。