MedianBlur(中值濾波/百分比濾波器)


C++原型:
void __stdcall MedianBlur(unsigned char *Src, unsigned char *Dest, int Width, int Height ,int Stride ,int Radius, int Percent)

C#聲明:

[DllImport("ImageProcessing.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true)]
internal static extern void MedianBlur(byte*Src, byte *Dest, int Width, int Height, int Stride, int Radius, int Percent);

VB.NET聲明:

<DllImport("ImageProcessing.dll", CallingConvention := CallingConvention.StdCall, CharSet := CharSet.Unicode, ExactSpelling := True)> _
Friend Shared Sub MedianBlur(ByVal Src As IntPtr, ByVal Dest As IntPtr, ByVal Width As Integer, ByVal Height As Integer, ByVal Stride As Integer, ByVal Radius As Integer, Byval Percent as Integer) End Sub

VB6.0聲明:

Private Declare Sub MedianBlur Lib "ImageProcessing" (ByVal Src As Long, ByVal Dest As Long, ByVal Width As Long, ByVal Height As Long, ByVal Stride As Long, ByVal Radius As Long, byval Percent as Long)

函數說明:

/// <summary>
/// 實現圖像百分比模糊效果,O(1)復雜度,最新整理時間 2014.9.20。
/// 參考論文:Median Filtering in Constant Time。 Simon Perreault and Patrick H´ ebert, IEEE member
/// </summary> /// <param name="Src">源圖像數據在內存的起始地址。</param> /// <param name="Dest">目標圖像數據在內存的起始地址。</param> /// <param name="Width">源和目標圖像的寬度。</param> /// <param name="Height">源和目標圖像的高度。</param> /// <param name="Radius">模糊的半徑,有效范圍[1,127],不可大於127。</param> /// <param name="Percent">控制結果圖亮度的一個參數,有效范圍[0,99],為0時即為最小值,為99時即為最大值,為50時相當於中值濾波。</param> /// <remarks> 1: 能處理8位灰度和24位圖像。</remarks> /// <remarks> 2: Src和Dest可以相同,相同時速度稍慢。</remarks> /// <remarks> 3: 對於24位圖像,使用多線程方式對每通道數據進行模糊后再組合,對於多核電腦速度能有提升。</remarks> /// <remarks> 4: 算法前后兩行的依耐性很強,算法本身不適合於並行。</remarks>

算法效果:

    

處理速度:

  I3  M380 2.53GHZ 筆記本上測試:1000 * 1000 彩色像素,用時125ms(時間是於參數無關的)。

代碼情況:

     本代碼是基於論文提供的ctmf.c中的代碼改寫並有繼續優化的,對於彩色圖像,將RGB通道分離成單通道,然后利用多線程對各通道數據分別進行中值模糊,最后再進行合成。

其他說明:

  由於采用SSE的相關函數,導致其中的中值的半徑值不能大於127(在實際中已經足夠用了),如果不用SSE,速度會降低至少一半以上的,該算法的思想可以擴展到其他的一些基於直方圖的濾鏡中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM