在影像處理領域中,在真正的應用過程前,通常需要對影像進行預先處理,達到去除干擾項的目的。濾波去噪就是其中的一項影像預處理工作。
在.NET下常用OpenCV進行影像處理工作,常用的.NET下的OpenCV庫有Emgu CV和OpenCVSharp。
Emgu CV是.NET平臺下對OpenCV影像處理庫的封裝,也就是.NET版的OpenCV。由於OpenCV是用C和C++編寫的,Emgu用C#對其進行封裝,允許用.Net語言來呼叫OpenCV函式,如C#、VB、VC++等。
OpenCvSharp 是一個OpenCV的.Net wrapper,應用最新的OpenCV庫開發,使用習慣比EmguCV更接近原始的OpenCV,有詳細的使用樣例供參考。該庫採用LGPL發行,對商業應用友好。使用OpenCvSharp,可用C#,VB.NET等語言實現多種流行的影像處理(image processing)與計算機視覺(computer vision)演算法。
本文將介紹利用Emgu CV進行影像處理濾波去噪的常用方法。
一、 中值濾波
Image image = Image.FromFile("xx.jpg"); Image<Bgr, byte> img = new Image<Bgr, byte>((Bitmap)image);//例項化一個三通道的OPENCV的影像物件 Int k=3;//濾波核,奇數 img = img.SmoothMedian(k);//按照指定的濾波核進行中值濾波 Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結果
二、 高斯濾波
Image image = Image.FromFile("xx.jpg"); Image<Bgr, byte> img = new Image<Bgr, byte>((Bitmap)image);//例項化一個三通道的OPENCV的影像物件 Int k=3;//濾波核,奇數 img = img. SmoothGaussian (k);//按照指定的濾波核進行高斯濾波 Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結果
三、 均值濾波
Image image = Image.FromFile("xx.jpg"); Image<Bgr, byte> img = new Image<Bgr, byte>((Bitmap)image);//例項化一個三通道的OPENCV的影像物件 Int k=3;//濾波核,奇數 img = img. SmoothBlur (k,k);//按照指定的濾波核進行均值濾波 Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結果
四、 方框濾波
Image image = Image.FromFile("xx.jpg"); Image<Bgr, byte> img = new Image<Bgr, byte>((Bitmap)image);//例項化一個三通道的OPENCV的影像物件 Int k=3;//濾波核,奇數 CvInvoke.BoxFilter(img, img, DepthType.Default, new Size(k, k), new Point(-1, -1));//按照指定的濾波核進行方框濾波 Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結果
五、 雙邊濾波
Image image = Image.FromFile("xx.jpg"); Image<Bgr, byte> img = new Image<Bgr, byte>((Bitmap)image);//例項化一個三通道的OPENCV的影像物件 Int k=3;//濾波核,奇數 CvInvoke.EdgePreservingFilter(img, img, EdgePreservingFilterFlag.NormconvFilter, k, 0.4f);;//按照指定的濾波核進行雙邊濾波 Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結果
---------------------------受字數限制,下一篇繼續------------------------------------------------------------------------------------------------------------------------------------------------------------
微信公眾號