1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【干貨】一個(gè)簡單方法識別毛玻璃、高斯模糊

        共 2078字,需瀏覽 5分鐘

         ·

        2021-08-01 02:49

           作者:晟沚          

                


        前  言


           本文主要推薦一種簡單的方法識別帶有毛玻璃、高斯模糊等效果的圖片。

            


        01

        毛玻璃效果

        毛玻璃效果的原理,即遍歷每一個(gè)像素,隨機(jī)選取這個(gè)像素周圍的某一個(gè)像素,替換當(dāng)前像素??梢允褂胦pencv實(shí)現(xiàn),代碼如下:

        #coding:utf-8import cv2import numpy as npimport random
        img = cv2.imread('test.jpg',1)shape = img.shapeh = shape[0]w = shape[1]dst = np.zeros((h,w,3),np.uint8)mm = 8 for m in range(h-mm): for n in range(w-mm): index = int(random.random()*8) (b,g,r) = img[m+index,n+index] dst[m,n] = (b,g,r)cv2.imwrite("result.jpg", dst)


        整個(gè)過程即選擇周圍像素的范圍距離最大為8像素,運(yùn)行以上代碼前后如下圖:




        02

        識別毛玻璃等模糊效果

        接下來介紹如何使用OpenCV、Python和Laplacian算子計(jì)算圖像中的模糊量,

        如果有信號處理方面的背景,首先要考慮的方法是計(jì)算圖像的快速傅里葉變換,然后檢查低頻和高頻的分布:如果圖像只有少量的高頻,那么圖像就會(huì)被認(rèn)為是模糊的。然而,定義什么算低數(shù)量的高頻或者什么是高數(shù)量的高頻是相當(dāng)困難的。

        本文介紹的方法可以計(jì)算一個(gè)單一的浮點(diǎn)值來表示一個(gè)給定圖像的模糊程度,只需采取一個(gè)圖像的單一通道(大概灰度)和卷積它與以下3 x 3的內(nèi)核,然后取響應(yīng)的方差(即標(biāo)準(zhǔn)差的平方)。如果方差低于預(yù)先定義的閾值,則認(rèn)為圖像模糊;否則,圖像不會(huì)模糊。

        方法很簡單,如下一行代碼就可

        cv2.Laplacian(image, cv2.CV_64F).var()

        這種方法有效的原因是由于Laplacian算子本身的定義,它用于測量圖像的二階導(dǎo)數(shù)。拉普拉斯算子突出顯示圖像中包含快速梯度變化的區(qū)域,很像Sobel和Scharr算子。和這些算子一樣,Laplacian也經(jīng)常用于邊緣檢測。這里的假設(shè)是,如果一幅圖像的方差較高,那么就說明圖像有廣泛的響應(yīng),包括類邊和非類邊,這是一幅正常的聚焦圖像的代表。但如果方差很低,那么就會(huì)有很小的響應(yīng)擴(kuò)散,這表明圖像中幾乎沒有邊緣。而圖像越模糊,邊緣就越少。所以可以用來檢測是否模糊。

        顯然,這里的關(guān)鍵是設(shè)置正確的閾值,而閾值的設(shè)置與應(yīng)用到的圖像集相關(guān)。如果閾值過低,你就會(huì)錯(cuò)誤地將原本不模糊的圖像標(biāo)記為模糊。如果閾值過高,那么實(shí)際上模糊的圖像將不會(huì)被標(biāo)記為模糊。這種方法只有在非常穩(wěn)定的圖像集(同一類型)中應(yīng)用良好。

        具體實(shí)現(xiàn)代碼如下,定義variance_of_laplacian函數(shù)。這個(gè)方法將我們想要計(jì)算焦距的圖像(假設(shè)為單個(gè)通道,例如灰度圖像)作為參數(shù), 先讀取輸入圖像圖像,再將其轉(zhuǎn)換為灰度,然后使用OpenCV應(yīng)用模糊檢測,通過自己設(shè)定的閾值即可區(qū)分出模糊圖片和不模糊圖片。

        import cv2def variance_of_laplacian(image):  return cv2.Laplacian(image, cv2.CV_64F).var()
        imagePath = “test.jpg”image = cv2.imread(imagePath)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)fm = variance_of_laplacian(gray)if fm < 100:    print("Blurry")




         

        END





        機(jī)器學(xué)習(xí)算法工程師


                                                    一個(gè)用心的公眾號


         







        瀏覽 162
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            污污污www精品国产网站 | 浴室里强摁做开腿呻吟的 | 日韩在线一| 国产骚B| 李采潭被黑人强伦 | 日本日逼视频 | 免费AV小说 | 俺去俺来也www色官网黑人 | 久久久久亚洲精品 | 精品国产AⅤ麻豆 |