OpenCV:快速量化两个图像之间的差异
OpenCV: Quantifying the difference between two images quickly
我有两张图像,我想了解它们在逐个像素级别上的差异。我的基本想法是获取两个图像,应用 absdiff,然后去差分中的每个像素,取其范数,并将范数存储在另一个数组中。这种方法的问题在于它对于我的应用程序来说太慢了。有谁知道任何替代方案?
非常感谢,
希拉里
用于计算赋范差的代码:
uchar* row_pointer_image_difference;
double* row_pointer_normed_difference;
Vec3b bgrPixel;
double pixel_distance;
for (long int r = 0; r < rows; r++){
row_pointer_image_difference = image_difference.ptr<uchar>(r);
row_pointer_normed_difference = normed_difference.ptr<double>(r);
for (long int c = 0; c < columns; c++){
//calculate pixel distance
bgrPixel = row_pointer_image_difference[c];
pixel_distance = norm(bgrPixel);
row_pointer_normed_difference[c] = pixel_distance;
}
}
您需要更好地阐明您的用例,以便查看可用的快捷方式。问问自己:你用差异做什么?你能忍受近似的差异吗?您只需要判断图像是否完全相同吗?
另外,您要优化的计算时间是多少?最坏的情况?平均?你能忍受计算时间的巨大差异吗?
例如,如果您只对测试精确相等性感兴趣,则在第一个差值处提前终止非常快,并且如果大多数图像彼此不同,则预期时间会很短。
如果预计重复部分很大,则随机像素采样可能是一种可行的方法,并且根据采样率,您可以量化误报和假阴的可能性。
相关文章:
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- SDL GPU 为什么将两个图像分成两个单独的循环更快?
- Qt-grabtoimage()和scale生成两个重叠的图像
- 如何快速创建一组覆盖两个图像的图像
- 有没有办法将两个输入图像堆叠到卤化物发生器中的单个 4 维缓冲区中?
- 如何在OpenCV中减去两个不同尺寸的图像和灰度图像
- 如何使用mingw64 gcc/g 比较两个图像
- OPENCV:如何使用5点算法从来自不同相机的两个图像之间的特征匹配来计算必需矩阵
- 如何比较QT中的两个RGB图像
- 如何在ROS中很好地订阅两个主题(图像和边界框分开发布)
- 在计算机视觉中减去两个图像
- ITK - 如何合并两个图像
- 从两个图像转换的OpenCV
- 使用条款 使用Opencv和Qt减去两个灰度图像
- 如何以相同的比例转换两个视觉上相似的图像
- 将两个图像附加到 FBO 以进行 MRT 渲染
- 如何区分具有对象坐标的两个图像
- 如何在OpenGL中将两个不同的图像渲染为两个不同图元?2D纹理阵列
- OpenCV Mahalanobis函数,用于计算两个图像之间的距离
- 将两个图像堆栈的非电源加载到 3D 纹理 OpenGL C++