- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序问题是,我可以获得大约 500 张图像,但是一对 2 个图像中可能有 1 个或 2 个完全相同,这意味着文件的校验和相同。我的最终目标是找出哪些是重复的图像 paris。
但是现在我必须对这 500 张图像应用压缩算法,因为未压缩的图像占用太多磁盘空间。好吧,压缩破坏了校验和,所以我无法使用压缩图像文件的校验和来找出哪些是重复的图像对。
幸运的是,我的压缩算法是无损的,这意味着恢复的未压缩图像仍然可以以某种方式散列。但我只想在没有太多磁盘写入访问的情况下在内存中执行此操作。那么我的问题是如何在内存中的大量图像文件中高效地提取重复图像?
我经常使用 opencv,但只要高效且不在磁盘上保存任何文件,答案就很好。 Python/Bash 代码也可以接受,C/C++ 和 OpenCV 是首选。
我可以想到使用 OpenCV 的 Mat 和 std::hash,但是 std::hash 不能直接工作,我必须编码 std::hash<cv::Mat>
具体来说,我还不知道如何正确地做到这一点。
当然可以,
For each 2 images in all my images:
if ((cv::Mat)img1 == (cv::Mat)img2):
print img1 and img2 are identical
但这是非常低效的,基本上是一个 n^4 算法。
注意我的问题不是图片相似度问题,而是memroy中的哈希问题。
最佳答案
获取图像哈希算法的思路:
减小原始图像的大小 (cvResize()),这样只有重要的对象会保留在图片上(去除高频)。将图像缩小为 8x8,则总像素数将为 64,哈希将适合所有类型的图像,无论其大小和纵横比如何。
移除颜色。将上一步中获得的图像转换为灰度。 (cvCvtColor())。因此,hash 将从 192(三个 channel 的 64 个值 - 红色、绿色和蓝色)减少到 64 个亮度值。
求出生成图像的平均亮度。 (cvAvg())
图像的二值化。 (cvThreshold()) 只保留那些大于平均值的像素(将它们视为 1,将其他所有视为 0)。
构建哈希。 1和0图片的64个值在一个64位哈希值中的翻译。
接下来,如果您需要比较两个图像,那么只需为每个图像构建一个哈希并计算不同位的数量(使用汉明距离)。汉明距离——相同长度的两个二进制字各自的数不同的位置的个数。
距离为零表示很可能是同一幅图像,其他值表征它们彼此相差多少。
关于c++ - 如何在大量无损压缩图像中提取重复图像对(完全相同)?如何 std::hash 在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18886951/
我正在寻找一个专门用于进一步压缩Jpeg而不改变图像的库。我找到了PackJpeg,但它不提供任何源代码,并且您不允许在商业上使用它。 最佳答案 在PackJPG page上,有一个指向JPEG Op
对于我的视频隐写项目(java),我需要将连续的 PNG 编码到电影文件中。我尝试了xuggler,但我得到了压缩。(由于隐藏在png图像的LSB中的数据在下次我从视频中提取帧时会丢失) 因为我需要稍
我想根据一个或多个模型的属性来过滤 Backbone 集合。我已经阅读了这个问题,我注意到讨论最多的解决方案是简单地使用 this.where({"applicationType": applicat
有没有办法使用 Python 或使用命令行无损将 PDF 旋转 90 度? 我正在寻找真正的旋转,而不仅仅是在 PDF 中添加“/ROTATE 90”,因为之后我必须通过 Hylafax 发送 PDF
我目前正在尝试在 FFMPEG 上使用 H264 对 RGB24 文件进行无损压缩。但是,H264 压缩(RGB24 -> YUV444)中使用的色彩空间转换已被证明是有损的(我猜测是由于量化误差)。
我目前正在处理无损 JPEG 文件(不是 JPEG-LS)。很难找到任何文件来测试我的应用程序。 特别是我需要包含重置间隔标记、多个 DC 霍夫曼表、多个场景或注释标记的文件。 你知道我在哪里可以找到
我正在尝试无损压缩图像,为了利用规律性,我想将图像从 RGB 转换为 Y'CbCr。 (我所说的 RGB 和 Y'CbCr 的具体细节在这里并不重要;RGB 数据由三个字节组成,我有三个字节来存储结果
我正在尝试仅使用 JavaScript 和 HTML5 自己创建 DICOM 查看器。最近几天我一直在研究这个项目,现在我成功解析了我需要的所有文本信息,并且我还可以正确读取和显示未压缩的灰度和 RG
Google 的 PageSpeed 工具告诉我优化我的 PNG 图像,这些图像在 Photoshop 中保存用于网络。在研究了无损 PNG 压缩选项后,我下载了 ImageOptim 并通过它放了一
我需要压缩视频流以通过网络将其从 C++ 库传输到 Java 平台 (Android) 并在那里解压缩。要求如下: 该库必须可用于 Android 平台和 C++(或者,2 个使用通用格式的独立库)
使用 ffmpeg h264(无损)编码/解码视频的见解 所以我在编码部分做了一些工作,用 264 编码一个 avi,但是 VLC 不会播放它,但是 Totem 会。解码同一个文件证明很麻烦。 (我想
我是一名优秀的程序员,十分优秀!