怎样实现两张图片对比
发布网友
发布时间:2022-04-28 11:28
我来回答
共1个回答
热心网友
时间:2023-10-05 11:30
思路一:
有个简单的方法就是随机取两幅图上的相同坐标的色素用Bitmap.GetPixel()方法。。你可以随机取10000次或者多少。然后对比每次取的像素是否相等。。两个变量来累计。。这样就可以粗略的计算出两个图片是否相似了。
思路二:
循环 for [i , j]
{
读出图片A 一点(像素)的 RGB 数值。
计算出灰度 YA[j][i] = 0.3*R + 0.59*G + 0.11*B
读出图片B 一点(像素)的 RGB 数值。
计算出灰度 YB[j][i] = 0.3*R + 0.59*G + 0.11*B
计算 一点 的 相似系数,
例如 灰度差除以两点平均灰度:
fabs(YA[j][i]-YB[j][i]) / ((YA[j][i]+YB[j][i])/2.0) -- 数值越小越相似
}
有了所有点的相似系数,做统计算,例如,把相似系数分20档,
计算落入各档的像素点的个数--就是概率啦。
画 概率分布图 和 累加 概率分布图。
当然,你可以设 累加 概率等于 几的地方 为 相似度 判据。
热心网友
时间:2023-10-05 11:30
思路一:
有个简单的方法就是随机取两幅图上的相同坐标的色素用Bitmap.GetPixel()方法。。你可以随机取10000次或者多少。然后对比每次取的像素是否相等。。两个变量来累计。。这样就可以粗略的计算出两个图片是否相似了。
思路二:
循环 for [i , j]
{
读出图片A 一点(像素)的 RGB 数值。
计算出灰度 YA[j][i] = 0.3*R + 0.59*G + 0.11*B
读出图片B 一点(像素)的 RGB 数值。
计算出灰度 YB[j][i] = 0.3*R + 0.59*G + 0.11*B
计算 一点 的 相似系数,
例如 灰度差除以两点平均灰度:
fabs(YA[j][i]-YB[j][i]) / ((YA[j][i]+YB[j][i])/2.0) -- 数值越小越相似
}
有了所有点的相似系数,做统计算,例如,把相似系数分20档,
计算落入各档的像素点的个数--就是概率啦。
画 概率分布图 和 累加 概率分布图。
当然,你可以设 累加 概率等于 几的地方 为 相似度 判据。