none
有人知道如何用C#來做影像的中值濾波功能來消除雜訊嗎?? RRS feed

  • 問題

  • 現在有一張都是斑點雜訊的圖~要讀到C#~在轉成灰階~並把這張圖用5*5的矩陣去做中間值濾波處理~將這25個灰階值全部重小排到大~在把這25個灰階值用重小排到大的中間的值代替~有人知道該如何用C#來寫嗎~希望有程式做個簡單的講解~謝謝!!
    2009年10月18日 下午 01:58

解答

  • Hi! 這個範例
    Median Filtering in C#

    裡面是 3*3 矩陣做中值濾波,他是寫在
    ConvOperation.cs 內的   public static bool Median(Bitmap b) 中
    如下所示程式碼就是做 3*3 矩陣值排序,由於是 9 個值做排序,所以中間值為9 個值排序後第5個
    所以取 p[0] = (byte)list[4];為新值
     

    for (int x = 3; x < nWidth-3; ++x)
    {
    	list=new ArrayList();
    	list.Add(p2[0]);
    	list.Add((p2-3)[0]);
    	list.Add((p2+3)[0]);
    	list.Add((p2 - stride )[0]);
    	list.Add((p2 - stride +3)[0]);
    	list.Add((p2 - stride - 3)[0]);
    	
    	list.Add((p2 + stride )[0]);
    	list.Add((p2 + stride +3)[0]);
    	list.Add((p2 + stride - 3)[0]);
    		
    	list.Sort();
    	p[0] = (byte)list[4];
    
    	++ p;
    	++ p2;            
    }
    

    Windows 7 多點觸控設計大賽
    • 已標示為解答 Lolota Lee 2009年10月23日 上午 06:25
    2009年10月18日 下午 03:45
    版主