Compare histograms of specific areas of two images? OpenCV

Question!

Basically, I want to be able to compare two histograms, but not of whole images just specific areas. I have image A and have a specific rectangular region on it that I want to compare to another image B. Is there a way to get the histogram of a definable rectangular region on an image? I have the x y position of the rectangular area, as well as it's width and height, and want to get its histogram. I'm using opencv with python.

Sorry if that isn't very clear :(

(I'm setting up a program that takes a picture of a circuit board, and checks each solder pad for consistency with an image of a perfect board. If one pad is off, the program raises a flag saying that specific pad is off by x percent, not the whole board.



Answers

Note: The following is in C++ but I think it is not hard to find the equivalent functions for python.

You can find the histogram of an image using this tutorial. So for example for the lena image we get:

lenahist

In your case, since you have the rectangle coordinates, you can just extract the ROI of the image:

// C++ code
cv::Mat image = cv::imread("lena.png", 0);
cv::Rect roiRect = cv::Rect(150, 150, 250, 250);
cv::Mat imageRoi = image(roiRect);

and then find the histogram of just the ROI with the same way as above:

lenaroihist

Is this what you wanted (in theory at least) or I misunderstood?

By : Sassa


This video can help you solving your question :)
By: admin