(二)图像的灰度化
灰度化的常用方法有两种:
1.Gray(i,j) = 0.299 * R(i,j) + 0.587 * G(i,j) + 0.114 * B(i,j)
2.Gray(i,j) = [30 * R(i,j) + 59 * G(i,j) + 11 * B(i,j)]/100
本设计进行灰度化的实现函数如下:
internal virtual void imageToGrayScale(int[][] image)
{
for (int y = 0; y < image[0].Length; y++)
{
for (int x = 0; x < image.Length; x++)
{
int r = image[x][y] >> 16 & 0xFF;
int g = image[x][y] >> 8 & 0xFF;
int b = image[x][y] & 0xFF;
int m = (r * 30 + g * 59 + b * 11) / 100;
image[x][y] = m;
}
}
(三)图像的降噪处理
降噪的方法很多, 选用的是中值滤波法, 因为中值滤波是一种非线性平滑滤波器。 中值
滤波在降低噪声的同时,又可以保持图像的细节,使用中值滤波时能较好保护图像的边缘。
中值滤波的滤波窗口的形状和尺寸对滤波效果有一定的影响。 常用的中值滤波窗口形状
一般为正方形、 十字形等。就一般经验而言, 对于有缓慢变化的较长轮廓线物体的图像,适
合使用正方形窗口; 对于包含尖角物体的图像, 适合使用十字形窗口。 窗口大小一般小于图
像中最小有效物尺寸为宜。
中值滤波的函数实现如下:
internal virtual bool[][] applyMedianFilter(bool[][] image, int threshold)
{
bool[][] filteredMatrix = new bool[image.Length][];
for (int i = 0; i < image.Length; i++)
评论15