如何比较两个边缘图像(在 OpenCV 中)? [英] How do I compare two edge-images (in OpenCV)?

查看:26
本文介绍了如何比较两个边缘图像(在 OpenCV 中)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

in my project i need to compare to images. One image shows a render-model and the other image is a photo, in which the real object, which is represented in the model, is shown. What i exactly want:

  • The algorithm has to compare the two images and return a number, that describes the similarity. Let's say the lower the number is, the better the images fit together.
  • Both images are represented as binary images which only contain the contours / edges of the real render-image / photo.
  • The photo has a lot more objects in it than the render-image. So i only want to check if the viewpoint to the render-object is nearly the same than the viewpoint to the real object in the photo. (Example: A car is modelled so it approximates a real car. I take a photo of the real car from a special position and orientation. Now i want to check, if the position and orientation of my virtual camera looking at the render-car is nearly the same, than the position and orientation of my real-life-camera). The solution is only to compare the white pixels of the render image to the pixels of the photo (as edge-image). The other pixels are not interesting.
  • The returned value of the image-comparision should decrease the better my orientation and position of the virtual camera fits to the real camera's orientation and position.

I tried to calculate the euclidian distance of the two images but the result is only good, when the pixels exactly fit to each other. Now i am searching for alterantives.

Until now i considered to use the normalized cross-correlation, but i really dont know if it fits to my task.

The question is, if the normalized cross-correlation is worth a try or if there are better methods of solving my problem!

The algorithm should be as fast as possible, because i compare a lot of images.

Thanks a lot


Thanks for your suggestions. I am a little confused due to the fact that the normalized cross-corellation and Haussdorff distance seem to be good for finding a small pattern in a big picture.

The question is: Are the two algorithms also good for comparing 2 pictures of the same size?

Here is an example of 2 images that have to be compared. At the moment i am comparing around 120 pictures-paires a second.

Too bad that i cannot post images as a new user. So here is the direct link: http://s14.directupload.net/file/d/2674/t8qzbq9i_png.htm

解决方案

How about experimenting with the Haussdorff distance as a starting point? General idea and c implementation here. Article here:

Comparing images using the Hausdorff distance, by DP Huttenlocher - 1993.

这篇关于如何比较两个边缘图像(在 OpenCV 中)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆