Как убрать элементы, прилегающие к границе изображения

У меня есть двоичное изображение, содержащее белые ядра на черном фоне.
Для моей обработки мне нужно исключить из изображения те ядра, которые были частично обрезаны границей.

Ниже приведено изображение, для этого случая я хотел бы удалить четыре ядра на верхней границе и четыре на нижней. Как я могу сделать это с OpenCV?

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

Мне нужно устранить те ядра, которые касаются границы.

-5

Решение

Сканируйте границы изображения и когда вы найдете белый пиксель заливка с черным.

Вы хотите что-то вроде:

uchar white(255);

// do top and bottom row
for(int y = 0; y < image.rows; y += image.rows-1)
{
uchar* row = image.ptr<uchar>(y)
for(int x = 0; x < image.cols; ++x)
{
if(row[x] == white)
{
cv::floodFill(image, cv::Point(x,y), cv::Scalar(0), (cv::Rect*)0, cv::Scalar(), cv::Scalar(200));
}
}
}
// fix left and right sides
for(int y = 0; y < image.rows; ++y)
{
row = image.ptr<uchar>(y)
for(int x = 0; x < image.cols; x += image.cols - 1)
{
if(row[x] == white)
{
cv::floodFill(image, cv::Point(x,y), cv::Scalar(0), (cv::Rect*)0, cv::Scalar(), cv::Scalar(200));
}
}
}
4

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