實(shí)操教程|一個簡單方法識別毛玻璃、高斯模糊

極市導(dǎo)讀
本文主要推薦一種簡單的方法識別帶有毛玻璃、高斯模糊等效果的圖片。 >>加入極市CV技術(shù)交流群,走在計算機(jī)視覺的最前沿
01 毛玻璃效果
毛玻璃效果的原理,即遍歷每一個像素,隨機(jī)選取這個像素周圍的某一個像素,替換當(dāng)前像素。可以使用opencv實(shí)現(xiàn),代碼如下:
#coding:utf-8import cv2import numpy as npimport randomimg = cv2.imread('test.jpg',1)shape = img.shapeh = shape[0]w = shape[1]dst = np.zeros((h,w,3),np.uint8)mm = 8for 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)
整個過程即選擇周圍像素的范圍距離最大為8像素,運(yùn)行以上代碼前后如下圖:


02 識別毛玻璃等模糊效果
接下來介紹如何使用OpenCV、Python和Laplacian算子計算圖像中的模糊量。
如果有信號處理方面的背景,首先要考慮的方法是計算圖像的快速傅里葉變換,然后檢查低頻和高頻的分布:如果圖像只有少量的高頻,那么圖像就會被認(rèn)為是模糊的。然而,定義什么算低數(shù)量的高頻或者什么是高數(shù)量的高頻是相當(dāng)困難的。
本文介紹的方法可以計算一個單一的浮點(diǎn)值來表示一個給定圖像的模糊程度,只需采取一個圖像的單一通道(大概灰度)和卷積它與以下3 x 3的內(nèi)核,然后取響應(yīng)的方差(即標(biāo)準(zhǔn)差的平方)。如果方差低于預(yù)先定義的閾值,則認(rèn)為圖像模糊;否則,圖像不會模糊。
方法很簡單,如下一行代碼就可
cv2.Laplacian(image, cv2.CV_64F).var()
這種方法有效的原因是由于Laplacian算子本身的定義,它用于測量圖像的二階導(dǎo)數(shù)。拉普拉斯算子突出顯示圖像中包含快速梯度變化的區(qū)域,很像Sobel和Scharr算子。和這些算子一樣,Laplacian也經(jīng)常用于邊緣檢測。這里的假設(shè)是,如果一幅圖像的方差較高,那么就說明圖像有廣泛的響應(yīng),包括類邊和非類邊,這是一幅正常的聚焦圖像的代表。但如果方差很低,那么就會有很小的響應(yīng)擴(kuò)散,這表明圖像中幾乎沒有邊緣。而圖像越模糊,邊緣就越少。所以可以用來檢測是否模糊。
顯然,這里的關(guān)鍵是設(shè)置正確的閾值,而閾值的設(shè)置與應(yīng)用到的圖像集相關(guān)。如果閾值過低,你就會錯誤地將原本不模糊的圖像標(biāo)記為模糊。如果閾值過高,那么實(shí)際上模糊的圖像將不會被標(biāo)記為模糊。這種方法只有在非常穩(wěn)定的圖像集(同一類型)中應(yīng)用良好。
具體實(shí)現(xiàn)代碼如下,定義variance_of_laplacian函數(shù)。這個方法將我們想要計算焦距的圖像(假設(shè)為單個通道,例如灰度圖像)作為參數(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")
如果覺得有用,就請分享到朋友圈吧!
推薦閱讀
2021-03-14
2021-03-08
2021-03-05

# CV技術(shù)社群邀請函 #
備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)
即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群
每月大咖直播分享、真實(shí)項(xiàng)目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

