C++图像比较每个块中的平均位数
C++ image comparison average number of bits in each block
我正在使用OpenCV库编写有关图像比较的应用程序。我正在使用基本的块匹配方法
如何提取每个块中的位数
考虑这是一个图像
16x16 像素
--------------
+ +
+ +
+ +
+------------+
块大小 = 8x8 像素
--------------
+ | +
+------------+
+ | +
+------------+
我的程序:
1)读取两个图像
2)将它们转换为灰度
3)将图像划分为块
的数量4)块比较
5)在输出中打印
相似度百分比
我的函数比较图像中块的每个像素
float imCompBMA(float **b1, float **b2, float h, float w){
float percent;
int i, j, counter=0;
for(i=0;i<h;i++){
for(j=0;j<w;j++){
// If both blocks have the same value at pixel (i,j)
//this line has to be improved
if(b1[i][j]==b2[i][j]){
counter++;
}
}
}
// Percent is the number of same pixels to the total number of pixels
percent=(float)(counter/(h*w))*100;
return percent;
}
那么我如何通过比较每个块中的平均位数来改进它
提前致谢
如果您的目标必须与图像比较而不是"块匹配"做一些事情,我建议您在 Opencv 模板匹配上查找解释。
如果你正在寻找一个块中的所有位是相同的,那么你不可避免地必须读取每个块中的所有位!
如果您尝试比较真实图像,这可能不是最佳方法。即使两个原始图像开始时相同,在大多数包中加载和保存也会进行小的单独但更改(因为它们被转换为不同的颜色空间并返回),当然,像 jpeg 这样的格式的节省会改变所有位。
编辑:如果你试图只计算位,那么获取一个指向行上像素块的整数(或长或长)指针,并计算该整数中的位数 - 参见K&R Bit计数器
相关文章:
- Base64 图像比较
- 比较BGR图像是否完全相同
- 如何使用mingw64 gcc/g 比较两个图像
- 如何比较QT中的两个RGB图像
- TBB免费图像lambda阵列比较错误
- 访问图像像素;MatIterator_<> 和 Mat::at 运算符的比较
- MPI BMP 图像比较更高效
- C++图像比较每个块中的平均位数
- Opencv比较图像
- OpenCV检测手部和比较图像
- OpenCV代码将存储在列表中的描述符与新的图像描述符进行比较
- 如何在 opencv 中将图像与数据库进行比较C++
- 使用直方图比较 c++ 匹配图像
- OpenCV图像调整大小与matlab的比较
- 使用C++和OpenCV进行图像比较的方法
- C# 中的 pHash 图像比较实现
- 使用来自poitr的OPENCV代码进行图像比较
- 使用c++或python进行图像比较
- 适应度函数对图像比较的开放,遗传编程
- 如何在qt中创建一个图像比较器?