【问题标题】:what values of an image should I use to produce a haar wavelet?我应该使用什么图像值来生成 haar 小波?
【发布时间】:2011-07-08 04:30:11
【问题描述】:

我目前有一个 Java 程序,可以获取图像中每个像素的 rgb 值。我还有一种方法可以在二维值矩阵上计算 Haar 小波。但是我不知道应该为计算 Haar 小波的方法赋予哪些值。我应该平均每个像素的 rgb 值并计算一个 haar 小波吗?或者只使用 r、g、b 中的 1 个。 我正在尝试为图像创建一个唯一的指纹。我在其他地方读到,这是一个很好的方法,因为我可以通过 2 个小波的点积来查看图像彼此之间的相似程度。

请告诉我应该根据什么值计算 Haar 小波。 谢谢 杰斯

【问题讨论】:

    标签: java image-processing rgb wavelet haar-wavelet


    【解决方案1】:

    由于 eznme 没有回答你的问题(你想要指纹,他解释了压缩和重建),这是你经常遇到的一种方法:

    您将颜色和亮度信息(色度和亮度)分开,并以不同的方式衡量它们。有时你甚至会丢弃色度而只使用亮度部分。这会显着减小指纹的大小(约三倍),并考虑到我们如何感知图像——主要是通过局部亮度,而不是绝对颜色。作为奖励,您在图像颜色处理方面获得了一些鲁棒性。

    可以通过不同的方式进行分离,例如将您的 RGB 图像转换为 YUVYIQ 色彩空间。如果只想保留亮度分量,这两种颜色空间是等价的。但是,它们对色度进行不同的编码。 这是 RGB 中亮度 Y 的线性变换: Y = 0.299*R + 0.587*G + 0.114*B

    当您查看数学时,您会注意到我们除了创建灰度图像之外没有做任何其他事情 - 考虑到当它们在数值上都相等时,我们认为绿色比红色更亮,红色比蓝色更亮。

    如果您想保留一些色度信息,为了使您的指纹尽可能简洁,您可以降低两个 U、V 分量的分辨率(每个分量实际上是 8 位)。因此,您可以通过将它们的信息减少到 4 位并将它们与移位运算符组合(不知道它在 java 中是如何工作的)将它们加入一个 8 位值。在最终的指纹距离计算(您提到的点积)中,与亮度相比,色度的权重应该更小。

    【讨论】:

      【解决方案2】:

      您应该将 R/G/B 组件视为不同的图像:为 R、G 和 B 分别创建一个矩阵,然后将小波独立应用于这些部分。

      然后,您从 3 个小波压缩通道重构 R/G/B 图像,最后将它们组合成一个 3 通道位图。

      【讨论】:

        猜你喜欢
        • 2014-07-01
        • 2018-10-23
        • 2011-02-05
        • 2013-07-23
        • 2018-03-13
        • 2021-05-26
        • 1970-01-01
        • 2015-01-29
        • 1970-01-01
        相关资源
        最近更新 更多