我想在黑色和黑色上应用中值过滤。窗口大小为3,5和7的白色256x256图像... 我找不到可以使用的排序算法。 你能帮助我并给我一些想法吗?
答案 0 :(得分:0)
您可以使用选择算法查找中位数而不进行排序: http://en.wikipedia.org/wiki/Selection_algorithm
但任何形式都可以。只需排序并取出中间的数字。
答案 1 :(得分:0)
我制作了一个分类代码:
int m = 1
表示(i = 0; i = 2; i ++)
for(j = 0,j = 2,j ++)
x [m]< - outputImage [i,j];
m = m + 1;
}
}
for(i = 1; i = 9; i ++)
for ( j = 9; j = i; j-- )
if x[m] < x [m - 1]
x[m] = x[m - 1]
}
}
}
m = 1 for(i = 0; i = 2; i ++)
for ( j = 0, j = 2, j++)
outputImage[i,j] = x[m];
m = m + 1;
}
}
排序后我把数字放在中间... 我现在的问题是我不知道如何将它作为for循环应用于我的代码 代码是这样的,我想在3x3窗口大小中使用中值滤波(我已经推出了盐和胡椒噪声):
for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLUMNS; j++)
{
outputImage[i][j] = inputImage[i][j];
}
}
for( p = 0; p <500; p++)
{
outputImage[rand() % 256 ] [rand() % 256] = 0;
}