91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用OpenCV實現圖像增強

發布時間:2021-07-14 14:59:01 來源:億速云 閱讀:443 作者:chen 欄目:大數據

本篇內容介紹了“如何使用OpenCV實現圖像增強”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!


如何使用OpenCV實現圖像增強

本期將介紹如何通過圖像處理從低分辨率/模糊/低對比度的圖像中提取有用信息。

下面讓我們一起來探究這個過程:

首先我們獲取了一個LPG氣瓶圖像,該圖像取自在傳送帶上運行的倉庫。我們的目標是找出LPG氣瓶的批號,以便更新已檢測的LPG氣瓶數量。

步驟1:導入必要的庫

import cv2import numpy as npimport matplotlib.pyplot as plt

步驟2:加載圖像并顯示示例圖像。

img= cv2.imread('cylinder1.png')img1=cv2.imread('cylinder.png')images=np.concatenate(img(img,img1),axis=1)cv2.imshow("Images",images)cv2.waitKey(0)cv2.destroyAllWindows()

如何使用OpenCV實現圖像增強LPG氣瓶圖片(a)批次-D26(b)批次C27

該圖像的對比度非常差。我們幾乎看不到批號。這是在燈光條件不足的倉庫中的常見問題。接下來我們將討論對比度受限的自適應直方圖均衡化,并嘗試對數據集使用不同的算法進行實驗。

步驟3:將圖像轉換為灰度圖像

gray_img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)gray_img1=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)

步驟4:找到灰度圖像的直方圖后,尋找強度的分布。

hist=cv2.calcHist(gray_img,[0],None,[256],[0,256])hist1=cv2.calcHist(gray_img1,[0],None,[256],[0,256])plt.subplot(121)plt.title("Image1")plt.xlabel('bins')plt.ylabel("No of pixels")plt.plot(hist)plt.subplot(122)plt.title("Image2")plt.xlabel('bins')plt.ylabel("No of pixels")plt.plot(hist1)plt.show()

如何使用OpenCV實現圖像增強

步驟5:現在,使用cv2.equalizeHist()函數來均衡給定灰度圖像的對比度。cv2.equalizeHist()函數可標準化亮度并增加對比度。

gray_img_eqhist=cv2.equalizeHist(gray_img)gray_img1_eqhist=cv2.equalizeHist(gray_img1)hist=cv2.calcHist(gray_img_eqhist,[0],None,[256],[0,256])hist1=cv2.calcHist(gray_img1_eqhist,[0],None,[256],[0,256])plt.subplot(121)plt.plot(hist)plt.subplot(122)plt.plot(hist1)plt.show()

如何使用OpenCV實現圖像增強

步驟6:顯示灰度直方圖均衡圖像

eqhist_images=np.concatenate((gray_img_eqhist,gray_img1_eqhist),axis=1)cv2.imshow("Images",eqhist_images)cv2.waitKey(0)cv2.destroyAllWindows()

如何使用OpenCV實現圖像增強

灰度直方圖均衡

讓我們進一步深入了解CLAHE

步驟7:

對比度有限的自適應直方圖均衡

該算法可以用于改善圖像的對比度。該算法通過創建圖像的多個直方圖來工作,并使用所有這些直方圖重新分配圖像的亮度。CLAHE可以應用于灰度圖像和彩色圖像。有2個參數需要調整。

1. 限幅設置了對比度限制的閾值。默認值為40

2. tileGridsize設置行和列中標題的數量。在應用CLAHE時,為了執行計算,圖像被分為稱為圖塊(8 * 8)的小塊。

clahe=cv2.createCLAHE(clipLimit=40)gray_img_clahe=clahe.apply(gray_img_eqhist)gray_img1_clahe=clahe.apply(gray_img1_eqhist)images=np.concatenate((gray_img_clahe,gray_img1_clahe),axis=1)cv2.imshow("Images",images)cv2.waitKey(0)cv2.destroyAllWindows()

如何使用OpenCV實現圖像增強

步驟8:

門檻技術

閾值處理是一種將圖像劃分為前景和背景的簡單但有效的方法。如果像素強度小于某個預定義常數(閾值),則最簡單的閾值化方法將源圖像中的每個像素替換為黑色像素;如果像素強度大于閾值,則使用白色像素替換源像素。閾值的不同類型是:

cv2.THRESH_BINARY

cv2.THRESH_BINARY_INV

cv2.THRESH_TRUNC

cv2.THRESH_TOZERO

cv2.THRESH_TOZERO_INV

cv2.THRESH_OTSU

cv2.THRESH_TRIANGLE

嘗試更改閾值和max_val以獲得不同的結果。

th=80max_val=255ret, o1 = cv2.threshold(gray_img_clahe, th, max_val, cv2.THRESH_BINARY)cv2.putText(o1,"Thresh_Binary",(40,100),cv2.FONT_HERSHEY_SIMPLEX,2,(255,255,255),3,cv2.LINE_AA)ret, o2 = cv2.threshold(gray_img_clahe, th, max_val, cv2.THRESH_BINARY_INV)cv2.putText(o2,"Thresh_Binary_inv",(40,100),cv2.FONT_HERSHEY_SIMPLEX,2,(255,255,255),3,cv2.LINE_AA)ret, o3 = cv2.threshold(gray_img_clahe, th, max_val, cv2.THRESH_TOZERO)cv2.putText(o3,"Thresh_Tozero",(40,100),cv2.FONT_HERSHEY_SIMPLEX,2,(255,255,255),3,cv2.LINE_AA)ret, o4 = cv2.threshold(gray_img_clahe, th, max_val, cv2.THRESH_TOZERO_INV)cv2.putText(o4,"Thresh_Tozero_inv",(40,100),cv2.FONT_HERSHEY_SIMPLEX,2,(255,255,255),3,cv2.LINE_AA)ret, o5 = cv2.threshold(gray_img_clahe, th, max_val, cv2.THRESH_TRUNC)cv2.putText(o5,"Thresh_trunc",(40,100),cv2.FONT_HERSHEY_SIMPLEX,2,(255,255,255),3,cv2.LINE_AA)ret ,o6=  cv2.threshold(gray_img_clahe, th, max_val,  cv2.THRESH_OTSU)cv2.putText(o6,"Thresh_OSTU",(40,100),cv2.FONT_HERSHEY_SIMPLEX,2,(255,255,255),3,cv2.LINE_AA)
final=np.concatenate((o1,o2,o3),axis=1)final1=np.concatenate((o4,o5,o6),axis=1)
cv2.imwrite("Image1.jpg",final)cv2.imwrite("Image2.jpg",final1)

如何使用OpenCV實現圖像增強

Thresh_Binary_inv,Thresh_Binary_inv,Thresh_Tozero

如何使用OpenCV實現圖像增強

Thresh_Tozero_inv,Thresh_trunc,Thresh_OSTU

步驟9:自適應閾值

在上一節中,我們使用了全局閾值來應用cv2.threshold()。如我們所見,由于圖像不同區域的照明條件不同,因此獲得的結果不是很好。在這些情況下,您可以嘗試自適應閾值化。在OpenCV中,自適應閾值處理由cv2.adapativeThreshold()函數執行

此功能將自適應閾值應用于src陣列(8位單通道圖像)。maxValue參數設置dst圖像中滿足條件的像素的值。adaptiveMethod參數設置要使用的自適應閾值算法。

cv2.ADAPTIVE_THRESH_MEAN_C:將T(x,y)閾值計算為(x,y)的blockSize x blockSize鄰域的平均值減去C參數。
cv2.ADAPTIVE_THRESH_GAUSSIAN_C:將T(x,y)閾值計算為(x,y)的blockSize x blockSize鄰域的加權總和減去C參數。

blockSize參數設置用于計算像素閾值的鄰域的大小,它可以取值3、5、7等。

C參數只是從均值或加權均值中減去的常數(取決于adaptiveMethod參數設置的自適應方法)。通常,此值為正,但可以為零或負。

gray_image = cv2.imread('cylinder1.png',0)gray_image1 = cv2.imread('cylinder.png',0)thresh2 = cv2.adaptiveThreshold(gray_image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)thresh3 = cv2.adaptiveThreshold(gray_image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 31, 3)thresh4 = cv2.adaptiveThreshold(gray_image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 13, 5)thresh5 = cv2.adaptiveThreshold(gray_image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 4)thresh21 = cv2.adaptiveThreshold(gray_image1, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)thresh31 = cv2.adaptiveThreshold(gray_image1, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 31, 5)thresh41 = cv2.adaptiveThreshold(gray_image1, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 21,5 )thresh51 = cv2.adaptiveThreshold(gray_image1, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 5)
final=np.concatenate((thresh2,thresh3,thresh4,thresh5),axis=1)final1=np.concatenate((thresh21,thresh31,thresh41,thresh51),axis=1)cv2.imwrite('rect.jpg',final)cv2.imwrite('rect1.jpg',final1)

如何使用OpenCV實現圖像增強

自適應閾值

如何使用OpenCV實現圖像增強

自適應閾值

步驟10:OTSU二值化

Otsu的二值化算法,在處理雙峰圖像時是一種很好的方法。雙峰圖像可以通過其包含兩個峰的直方圖來表征。Otsu的算法通過最大化兩類像素之間的方差來自動計算將兩個峰分開的最佳閾值。等效地,最佳閾值使組內差異最小化。Otsu的二值化算法是一種統計方法,因為它依賴于從直方圖得出的統計信息(例如,均值,方差或熵)
gray_image = cv2.imread('cylinder1.png',0)gray_image1 = cv2.imread('cylinder.png',0)ret,thresh2 = cv2.threshold(gray_image,0, 255,  cv2.THRESH_BINARY+cv2.THRESH_OTSU)ret,thresh3 = cv2.threshold(gray_image1,0, 255,  cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2.imwrite('rect.jpeg',np.concatenate((thresh2,thresh3),axis=1))

如何使用OpenCV實現圖像增強

OTSU二值化

現在,我們已經從低對比度的圖像中清楚地識別出批號。

“如何使用OpenCV實現圖像增強”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

城固县| 宿州市| 遵化市| 衡南县| 桂平市| 兴仁县| 佛冈县| 额济纳旗| 丹凤县| 肇东市| 米泉市| 桂东县| 陵川县| 金堂县| 永宁县| 海伦市| 射洪县| 临桂县| 米林县| 龙州县| 江津市| 四川省| 余江县| 吴江市| 东辽县| 固原市| 溆浦县| 鄂伦春自治旗| 加查县| 黔江区| 苍南县| 石河子市| 呈贡县| 沅陵县| 甘肃省| 哈密市| 长沙市| 天峻县| 霍邱县| 社旗县| 曲松县|