0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

圖像處理技術(shù)之濾波去噪

jf_78858299 ? 來源:明月心技術(shù)學(xué)堂 ? 作者:饒玉田 ? 2023-02-08 16:34 ? 次閱讀

在圖像處理領(lǐng)域中,在真正的應(yīng)用過程前,通常需要對(duì)圖像進(jìn)行預(yù)先處理,達(dá)到去除干擾項(xiàng)的目的。濾波去噪就是其中的一項(xiàng)圖像預(yù)處理工作。

在.NET下常用OpenCV進(jìn)行圖像處理工作,常用的.NET下的OpenCV庫(kù)有Emgu CV和OpenCVSharp。

** EmguCV**是.NET平臺(tái)下對(duì)OpenCV圖像處理庫(kù)的封裝,也就是.NET版的OpenCV。由于OpenCV是用C和C++編寫的,Emgu用C#對(duì)其進(jìn)行封裝,允許用.Net語言來調(diào)用OpenCV函數(shù),如C#、VB、VC++等。

OpenCvSharp ^ ^是一個(gè)OpenCV的.Net wrapper,應(yīng)用最新的OpenCV庫(kù)開發(fā),使用習(xí)慣比EmguCV更接近原始的OpenCV,有詳細(xì)的使用樣例供參考。。使用OpenCvSharp,可用C#,VB.NET等語言實(shí)現(xiàn)多種流行的圖像處理(image processing)與計(jì)算機(jī)視覺(computer vision)算法。

一、 中值濾波

Image image = Image.FromFile("xx.jpg");
Imagebyte> img = new Imagebyte>((Bitmap)image);//實(shí)例化一個(gè)三通道的OPENCV的圖像對(duì)象
Int k=3;//濾波核,奇數(shù)
 img =img.SmoothMedian(k);//按照指定的濾波核進(jìn)行中值濾波
Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結(jié)果

二、 高斯濾波

Image image = Image.FromFile("xx.jpg");
Imagebyte> img = new Imagebyte>((Bitmap)image);//實(shí)例化一個(gè)三通道的OPENCV的圖像對(duì)象
Int k=3;//濾波核,奇數(shù)
img = img. SmoothGaussian (k);//按照指定的濾波核進(jìn)行高斯濾波
Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結(jié)果

三、 均值濾波

Image image = Image.FromFile("xx.jpg");
Imagebyte> img = new Imagebyte>((Bitmap)image);//實(shí)例化一個(gè)三通道的OPENCV的圖像對(duì)象
Int k=3;//濾波核,奇數(shù)
img = img. SmoothBlur (k,k);//按照指定的濾波核進(jìn)行均值濾波
Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結(jié)果

四、 方框?yàn)V波

Image image = Image.FromFile("xx.jpg");
Imagebyte> img = new Imagebyte>((Bitmap)image);//實(shí)例化一個(gè)三通道的OPENCV的圖像對(duì)象
Int k=3;//濾波核,奇數(shù)
CvInvoke.BoxFilter(img, img, DepthType.Default, new Size(k, k), new Point(-1, -1));//按照指定的濾波核進(jìn)行方框?yàn)V波
Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結(jié)果

五、 雙邊濾波

Image image = Image.FromFile("xx.jpg");
Imagebyte> img = new Imagebyte>((Bitmap)image);//實(shí)例化一個(gè)三通道的OPENCV的圖像對(duì)象
Int k=3;//濾波核,奇數(shù)
CvInvoke.EdgePreservingFilter(img, img, EdgePreservingFilterFlag.NormconvFilter, k, 0.4f);;//按照指定的濾波核進(jìn)行雙邊濾波
Bitmap bitmap= img.Bitmap;//輸出Bitmap格式的結(jié)果

六、 非局部去噪

CvInvoke.FastNlMeansDenoising(img, img);

七、 彩色模糊

色彩聚類平滑濾波    用于區(qū)域分割
CvInvoke.PyrMeanShiftFiltering(img, img,5, 5, 2, newMCvTermCriteria(2));

八、 離散余弦變換DCT濾波

/// 
       ///離散余弦變換(Dct)濾波
/// 
        /// 圖像加載到opencv的mat數(shù)據(jù)格式
        /// 
        public static Mat Dct(Mat mat)
        {
            if (mat.NumberOfChannels < 3)//單通道圖像,即二值化圖或者灰度圖
            {
                if (mat.Size.Height % 2 != 0)//圖像長(zhǎng)寬需要為偶數(shù),如果不是則進(jìn)行擴(kuò)邊處理
                {
                    CvInvoke.CopyMakeBorder(mat, mat, 0, 1, 0, 0, BorderType.Constant);
                }
                if (mat.Size.Width % 2 != 0) //圖像長(zhǎng)寬需要為偶數(shù),如果不是則進(jìn)行擴(kuò)邊處理
                {
                    CvInvoke.CopyMakeBorder(mat, mat, 0, 0, 0, 1, BorderType.Constant);
                }
                Mat matdst = new Mat();
                Emgu.CV.XPhoto.XPhotoInvoke.DctDenoising(mat, matdst, 8);
                return matdst;
            }
            else
            {
                Mat[] Matbgr = mat.Split();//三通道圖像,需要拆分三個(gè)獨(dú)立的單通道進(jìn)行處理,
                for (int i = 0; i < Matbgr.Length; i++)
                {
                    Matbgr[i] = Dct(Matbgr[i]);//按單通道處理
                }
                List<Mat> listmat = new List<Mat>();
                for (int i = 0; i < Matbgr.Length; i++)
                {
                    listmat.Add(Matbgr[i]);
                }
                VectorOfMat vm = new VectorOfMat(listmat.ToArray());//合并處理后的通道
                CvInvoke.Merge(vm, mat);
                return mat;
            }
        }

九、 閾值濾波

思路:

  1. 圖像轉(zhuǎn)成灰度
  2. 計(jì)算灰度平均值
  3. 以灰度平均值作為臨界點(diǎn)進(jìn)行二值化處理
  4. 輪廓檢測(cè)
  5. 遍歷所有的輪廓,得到每個(gè)輪廓的矩形范圍(一般就是每個(gè)噪聲點(diǎn)的范圍)
  6. 判斷每個(gè)矩形的長(zhǎng)寬是否小于給定值,并用白色在原來的圖像上進(jìn)行填充,即把認(rèn)為是噪點(diǎn)的范圍用白色顏色填充
  7. 返回處理后的圖像
Image image = Image.FromFile("xx.jpg");
Int k=5;//濾波核,
  ImageByte> img = new Imagebyte>((Bitmap)image);
                ImageByte> gray = img.ConvertByte>();
                Gray average = gray.GetAverage();//平均值
                CvInvoke.Threshold(gray, gray, average.MCvScalar.V0 - average.MCvScalar.V0 * 0.2, 255, ThresholdType.Binary);//二值化


                using (VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint())
                {
                    CvInvoke.FindContours(gray, contours, gray, RetrType.List, ChainApproxMethod.ChainApproxSimple);
                    int count = contours.Size;
                    for (int i = 0; i < count; i++)
                    {
                        using (VectorOfPoint contour = contours[i])
                        using (VectorOfPoint approxContour = new VectorOfPoint())
                        {
                            Rectangle rec = CvInvoke.BoundingRectangle(contour);
                            if (rec.Width <= k && rec.Height <= k)
                            {
                                CvInvoke.Rectangle(img, rec, new MCvScalar(255, 255, 255), -1);
                            }
                        }
                    }
                }
                return img.Bitmap;
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 圖像處理
    +關(guān)注

    關(guān)注

    27

    文章

    1275

    瀏覽量

    56577
  • net
    net
    +關(guān)注

    關(guān)注

    0

    文章

    125

    瀏覽量

    56117
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    625

    瀏覽量

    41215
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    求基于fpga的圖像去噪的設(shè)計(jì)

    求用vrilog語言的用雙邊濾波算法的圖像去噪程序代碼。謝謝,急?。?!
    發(fā)表于 05-12 21:36

    源碼交流=圖像處理 實(shí)現(xiàn)圖像去噪、濾波、銳化、邊緣檢測(cè)

    本帖最后由 乂統(tǒng)天下 于 2020-4-2 11:54 編輯 新手學(xué)習(xí),多多關(guān)照,互相交流,共同進(jìn)步^-^【實(shí)現(xiàn)功能】數(shù)字圖像處理基本操作 [Matlab2016b]實(shí)現(xiàn)圖像去噪、濾波
    發(fā)表于 04-01 19:03

    基于稀疏分解的圖像去噪

    基于稀疏分解的圖像去噪處理是將被噪聲污染的圖像分解成圖像的稀疏成分和其他成分。稀疏成分對(duì)應(yīng)于圖像中的有用信息,其他成分對(duì)應(yīng)于
    發(fā)表于 12-03 12:59 ?39次下載

    面向彩色手術(shù)顯微圖像算法改進(jìn)

    對(duì)于要求高保真的彩色手術(shù)顯微圖像,去除采集過程中引入的脈沖噪聲是一項(xiàng)非常重要的任務(wù)。將自適應(yīng)矢量中值濾波方法應(yīng)用于彩色圖像去噪,其效果非常理想。該方法可根據(jù)
    發(fā)表于 08-12 08:22 ?15次下載

    基于小波變換的信號(hào)濾波研究

    本文介紹了 小波變換 理論, 系統(tǒng)地研究了小波變換在信號(hào)處理尤其是信號(hào)濾波方面的應(yīng)用。根據(jù)不同類型的噪音, 給出了基于不同小波變換的濾波
    發(fā)表于 08-03 17:46 ?56次下載

    基于Gauss濾波和Euler修復(fù)模型的SAR圖像去噪

    基于Gauss濾波和Euler修復(fù)模型的SAR圖像去噪_王田芳
    發(fā)表于 01-07 16:24 ?2次下載

    基于中值濾波和小波變換的火電廠爐膛火焰圖像去噪方法

    針對(duì)煤電廠爐膛火焰圖像含有脈沖噪聲和高斯噪聲混合含圖像的特點(diǎn),提出了中值濾波和小波變換相結(jié)合的火焰圖像去噪方法。首先采用自適應(yīng)權(quán)重中值
    發(fā)表于 11-27 09:46 ?1次下載
    基于中值<b class='flag-5'>濾波</b>和小波變換的火電廠爐膛火焰<b class='flag-5'>圖像去噪</b>方法

    圖像分割的非局部均值算法

    針對(duì)傳統(tǒng)非局部均值(NLM)算法的濾波參數(shù)非自適應(yīng)及后邊緣易模糊的缺點(diǎn),提出一種基于圖像分割的非局部均值
    發(fā)表于 11-30 14:19 ?1次下載
    <b class='flag-5'>圖像</b>分割的非局部均值<b class='flag-5'>去</b><b class='flag-5'>噪</b>算法

    雙邊濾波點(diǎn)云算法

    針對(duì)三維點(diǎn)云數(shù)據(jù)模型在光順中存在不同尺度噪聲的問題,提出一種基于噪聲分類的雙邊濾波點(diǎn)云算法。該算法首先將噪聲細(xì)分為大尺度和小尺度噪聲
    發(fā)表于 01-05 10:51 ?2次下載
    雙邊<b class='flag-5'>濾波</b>點(diǎn)云<b class='flag-5'>去</b><b class='flag-5'>噪</b>算法

    小波閾值的應(yīng)用

    介紹了小波閾值的三種應(yīng)用:小波閾值技術(shù)在ECG信號(hào)處理中的應(yīng)用、小波閾值
    發(fā)表于 01-10 14:25 ?6058次閱讀
    小波閾值<b class='flag-5'>去</b><b class='flag-5'>噪</b>的應(yīng)用

    基于python的小波閾值算法

    ,一般不作處理,只對(duì)剩余三個(gè)高通部分進(jìn)行處理。一次閾值并不能完全去除噪聲,還需要對(duì)未作處理的低頻部分(LL)再次進(jìn)行小波分解和閾值
    發(fā)表于 01-10 16:32 ?1w次閱讀

    圖像去噪算法的優(yōu)點(diǎn)和缺點(diǎn)

    BM3D 是一種降噪方法提高了圖像在變換域的稀疏表示。BM3D 降噪方法的優(yōu)點(diǎn)是更好的保留圖像中的一些細(xì)節(jié),BM3D采用了不同的策略。通過搜索相似塊并在變換域進(jìn)行
    的頭像 發(fā)表于 05-04 18:36 ?1.8w次閱讀
    <b class='flag-5'>圖像去噪</b>算法的優(yōu)點(diǎn)和缺點(diǎn)

    如何使用PDE實(shí)現(xiàn)線條痕跡圖像去噪算法的設(shè)計(jì)

    由于金屬表面的銹蝕,使得線條痕跡圖像易受噪聲影響,造成圖像特征提取、比對(duì)和分析困難等問題。常用的方法如高斯濾波易破壞邊緣特征,形成邊緣偏
    發(fā)表于 09-02 17:50 ?11次下載
    如何使用PDE實(shí)現(xiàn)線條痕跡<b class='flag-5'>圖像去噪</b>算法的設(shè)計(jì)

    基于波域調(diào)和濾波擴(kuò)散模型的圖像去噪算法

    針對(duì)當(dāng)前圖像去噪算法缺乏對(duì)整體結(jié)構(gòu)的分析以及運(yùn)算量過大的不足,提岀了一種利用波域調(diào)和濾波擴(kuò)散模型改進(jìn)BM3D技術(shù)的新算法。首先,利用傳統(tǒng)
    發(fā)表于 05-18 15:39 ?4次下載

    圖像識(shí)別技術(shù)的原理是什么

    圖像識(shí)別技術(shù)是一種利用計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)技術(shù)對(duì)圖像進(jìn)行分析和理解的技術(shù)。它可以幫助計(jì)算機(jī)識(shí)別和理解圖像
    的頭像 發(fā)表于 07-16 10:46 ?792次閱讀