繁体   English   中英

我应该使用图像的什么值来产生哈尔小波?

[英]what values of an image should I use to produce a haar wavelet?

我目前有一个Java程序,它将获取图像中每个像素的rgb值。 我也有一种方法可以在二维值矩阵上计算Haar小波。 但是,我不知道应该为计算Haar小波的方法提供哪些值。 我应该对每个像素的rgb值取平均值,然后在其上计算一个haar小波吗? 或仅使用r,g,b中的1个。 我正在尝试为图像创建唯一的指纹。 我在其他地方读到这是一个好方法,因为我可以取两个小波的点积,以查看图像之间的相似程度。

请让我知道在计算Haar小波时应使用的值。 谢谢杰西

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

然后,您可以从3个小波压缩通道中重建R / G / B图像,最后将它们组合为3通道位图。

由于eznme没有回答您的问题(您想要指纹,他解释了压缩和重建),因此您经常会遇到以下一种方法:

您将颜色和亮度信息(色度和亮度)分开,然后对它们进行加权。 有时,您甚至会丢掉色度,仅使用亮度部分。 这样可以大大减少指纹的大小(约三倍),并考虑到我们如何感知图像-主要是通过局部亮度而不是绝对颜色。 另外,您还可以获得一些有关图像色彩处理的鲁棒性。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM