Я применяю операцию расширения к бинарному изображению рисового зерна. При использовании структурирующего элемента размером 9x9 частицы шума увеличиваются, что логично. Но когда я использую структурирующий элемент размером 15x15, я получаю новые шумовые частицы, примыкающие к исходным шумовым частицам. Это очень сбивает с толку, так как я не могу понять, почему это происходит. Структурирующий элемент представляет собой матрицу размера nxn со всеми единицами. Изображения были прикреплены для справки.
Исходное изображение:
Увеличенное изображение (9x9 SE):
Увеличенное изображение (15x15 SE):Пожалуйста, помогите!!
Код:
void DilateBinary(Mat Image, Mat& op, double* SE, int m){
op=Image.clone();
double pixelvalue;
int limit=(m-1)/2;
for(int y = limit; y < (Image.rows - limit); y++)
{
for(int x = limit; x < (Image.cols - limit); x++)
{
double max=0.0;
//printf("Input pixel: %u \n",Image.at<unsigned char>(y,x));
for(int j = -limit; j <=limit ; j++)
{
for(int i = -limit; i <=limit ; i++)
{
if(*(SE + (j+1)*m + (i+1) ) > 0)
{
pixelvalue = (*(SE + (j+1)*m + ((2*limit)-(i+1)) )) * (Image.at<unsigned char>(y+j,x+i));
//printf("%f",pixelvalue);
if (pixelvalue>127)
max=255.0;
}
}
}
op.at<uchar>(y,x) = max;
//printf("Output pixel: %u \n",op.at<unsigned char>(y,x));
//printf("Modified pixel= %f %d\n",pixelvalue,cvRound(pixelvalue));
}
}
Примечание. SE — это указатель на маску/SE, которую я использую. & m равно 9 для 9x9 SE, 15 для 15x15 SE.........