<Elena> 0 Жалоба Опубликовано August 21, 2012 Здравствуйте! Вот такой вопрос: есть ли в OpenCV возможность бинаризовать не все изображение, а некоторую его часть, используя маску? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано August 21, 2012 можно наложить маску через параметр mask который принимают некоторые функции, можно еще область интереса выделить интересующую прямоугольную область cvSetImageROI Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
<Elena> 0 Жалоба Опубликовано August 21, 2012 cvThreshold, к сожалению, маску не принимает, и область интереса может быть не прямоугольная. Маска может быть, например, такой:mask.bmp Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано August 21, 2012 Можно с помощью маски создать временное изображение, бинаризоовать его и наложить на исходное. Пойдёт? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
<Elena> 0 Жалоба Опубликовано August 21, 2012 Так я уже пробовала, но тогда гистограмма "уходит" за счет большой добавочной черной/белой/серой зоны, и порог Отсу считается неправильно. Рассчитывать его вручную - приятного мало, хотелось бы без этого обойтись. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 21, 2012 I=I*!m+Ib*m; где I - исходное изображение, m - маска , !m - инверсия маски, Ib - бинаризованное исходное изображение. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
<Elena> 0 Жалоба Опубликовано August 21, 2012 Я, наверное, неправильно сформулировала задачу, сейчас исправлюсь. Пусть есть исходное изображение (1) и маска (2). Если рассчитать порог Отсу, то получаем некоторое значение этого порога для всего изображения (1). Если рассчитывать порог только для части, определенной маской (2), то он будет уже другим, так как гистограмма этой части отлична от гистограммы всего изображения. Соответственно, и результат бинаризации будет другой. Но заложена ли в OpenCV возможность рассчета порога для произвольной области, или придется переделать кусок из исходников/написать самой - вот этого я не знаю) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано August 21, 2012 Да, кусок отсюда можно подстроить под свои нужды (не так-уж там и много строчек): opencv\modules\imgproc\src\thresh.cpp Такой встроенной функции нет. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах