Найти разницу в изображении

У меня есть изображение следующим образом:

введите описание изображения здесь

Я хочу обнаружить 5 циферблатов для обработки. Hough круги обнаруживает все другие не относящиеся к делу круги. Чтобы решить эту проблему, я создал простое изображение и сгенерировал абсолютную разницу с этим. Это дало это изображение:

введите описание изображения здесь

Я нарисовал рамку вокруг него, и окончательное изображение:

введите описание изображения здесь

Мой код выглядит следующим образом:

Mat img1 = imread(image_path1, COLOR_BGR2GRAY);
Mat img2 = imread(image_path2, COLOR_BGR2GRAY);

cv::Mat diffImage;
cv::absdiff(img2, img1, diffImage);

cv::Mat foregroundMask = cv::Mat::zeros(diffImage.rows, diffImage.cols, CV_8UC3);

float threshold = 30.0f;
float dist;

for(int j=0; j<diffImage.rows; ++j)
{
for(int i=0; i<diffImage.cols; ++i)
{
cv::Vec3b pix = diffImage.at<cv::Vec3b>(j,i);

dist = (pix[0]*pix[0] + pix[1]*pix[1] + pix[2]*pix[2]);
dist = sqrt(dist);

if(dist>threshold)
{
foregroundMask.at<unsigned char>(j,i) = 255;
}
}
}

cvtColor(diffImage,diffImage,COLOR_BGR2GRAY);

Mat1b img = diffImage.clone();

// Binarize image
Mat1b bin = img > 70;

// Find non-black points
vector<Point> points;
findNonZero(bin, points);

// Get bounding rect
Rect box = boundingRect(points);

// Draw (in color)
rectangle(img1, box, Scalar(0,255,0), 3);

// Show
imshow("Result", img1);

Теперь проблема в том, что я не могу сравнить обычное изображение с другими изображениями разных размеров. Любой указатель в правильном направлении будет очень полезным.

С Уважением,
Сагир А. Хатр

редактировать
Мое простое изображение выглядит следующим образом

введите описание изображения здесь

Я хочу создать стандартный образец обычного изображения, которое можно использовать с любым изображением для обнаружения этой части …

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]