首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 指標進行影像操作(二)

     編輯:關於C語言

比較 GDI+ 使用的 GetPixel/SetPixel,讓你立馬感覺這世界多美妙。

再來一個中值濾波操作:

/// 中值濾波
/// 
public void MedianFilter(int dgGrayValue)
{
    byte s;
    byte[] p = new byte[9];
    int i, j, x, y, Stride;
    unsafe
    {
        byte* point = (byte*)this.ImageData.Scan0;
        Stride = this.ImageData.Stride;
        point = point + 3 + this.ImageData.Stride;
        for (i = 0; i < this.ImageData.Height - 1; i++)
        {
            for (j = 0; j < this.ImageData.Width - 1; j++)
            {
                p[0] = *(point - Stride - 1);
                p[1] = *(point - Stride + 2);
                p[2] = *(point - Stride + 5);
                p[3] = *(point - 1);
                p[4] = *(point + 2);
                p[5] = *(point + 5);
                p[6] = *(point + Stride - 1);
                p[7] = *(point + Stride + 2);
                p[8] = *(point + Stride + 5);
                for (x = 0; x < 5; x++)
                {
                    for (y = x + 1; y < 9; y++)
                    {
                        if (p[x] > p[y])
                        {
                            s = p[x]; p[x] = p[y]; p[y] = s;
                        }
                    }
                }
                *point = p[4];
                *(point - 1) = p[4];
                *(point - 2) = p[4];
                point += 3;
            }
            point += Stride - this.ImageData.Width * 3;
        }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved