提高計(jì)算機(jī)視覺(jué)任務(wù)的圖像質(zhì)量
點(diǎn)擊下方“AI算法與圖像處理”,一起進(jìn)步!
重磅干貨,第一時(shí)間送達(dá)
二值化/閾值化 降噪 糾偏 重新縮放 形態(tài)學(xué)操作 為了嘗試這些操作,我們將使用Python3語(yǔ)言及其兩個(gè)庫(kù), Pillow 和OpenCV。
二值化
##?import?dependencies
import?cv2
from?PIL?import?Image
import?matplotlib.pyplot?as?plt
##?reading?image
img?=?cv2.imread('text_document.jpg',0)
##?apply?binary?thresholding
ret,thresh1?=?cv2.threshold(img,170,255,cv2.THRESH_BINARY)
##?plot?original?and?binarised?image?
titles?=?['Original?Image',?'Binary?Thresholding']
images?=?[img,?thresh1]
for?i?in?range(2):
????plt.figure(figsize=(20,20))
????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
????plt.title(titles[i])
????plt.xticks([]),plt.yticks([])

自適應(yīng)閾值均值:閾值是平均值附近區(qū)域減去固定的?。 自適應(yīng)高斯閾值:閾值是鄰域值減去常數(shù)C的高斯加權(quán)總和。
##?import?dependencies
import?cv2
from?PIL?import?Image
import?matplotlib.pyplot?as?plt
##?reading?image
img?=?cv2.imread('lighting_conditions.jpg',?0)
##?apply?adaptive?thresholding?
##?adaptive?mean?thresholding?
th1?=?cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,
????????????cv2.THRESH_BINARY,11,2)
##?adaptive?gaussian?thresholding
th2?=?cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
????????????cv2.THRESH_BINARY,11,2)
##?plot?original?and?binarised?image?
titles?=?['Original?Image',?'Adaptive?Mean?Thresholding',?'Adaptive?Gaussian?Thresholding']
images?=?[img,?th1,?th2]
plt.figure(figsize=(20,20))
for?i?in?range(3):
????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
????plt.title(titles[i])
????plt.xticks([]),plt.yticks([])

##?import?dependencies
import?cv2
from?PIL?import?Image
import?matplotlib.pyplot?as?plt
##?reading?image
img?=?cv2.imread('lighting_conditions.jpg',?0)
##?apply?Otru's?thresholding
ret3,th1?=?cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
##?plot?original?and?binarised?image?
titles?=?["Original?Image",?"Binary?Otsu's?Thresholding"]
images?=?[img,?th1]
plt.figure(figsize=(20,20))
for?i?in?range(2):
????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
????plt.title(titles[i])
????plt.xticks([]),plt.yticks([])

降噪
##?import?dependencies
import?cv2
from?PIL?import?Image
import?matplotlib.pyplot?as?plt
##?reading?image
img?=?cv2.imread('noisy_image.jpg')
##?apply?image?denoising
dst?=?cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21)
##?plot?original?and?denoised?image?
titles?=?["Original?Image",?"Denoised?Image"]
images?=?[img,?dst]
plt.figure(figsize=(20,20))
for?i?in?range(2):
????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
????plt.title(titles[i])
????plt.xticks([]),plt.yticks([])

糾偏
重新縮放
##?import?dependencies
import?cv2
from?PIL?import?Image
import?numpy?as?np
import?matplotlib.pyplot?as?plt
##?reading?image
img?=?Image.open('noisy_image.jpg')
##?apply?image?rescaling?and?making?image?300x300?(downscaling)
dst?=?img.resize((50,50))
##?plot?original?and?downscaled?image
titles?=?["Original?Image",?"Rescaled?Image"]
images?=?[np.asarray(img),?np.asarray(dst)]
plt.figure(figsize=(20,20))
for?i?in?range(2):
????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
????plt.title(titles[i])
????plt.xticks([]),plt.yticks([])

形態(tài)學(xué)操作
##?import?dependencies
import?cv2
from?PIL?import?Image
import?matplotlib.pyplot?as?plt
##?reading?image
img?=?cv2.imread('text_document.jpg',?0)
##?apply?erosion
kernel?=?np.ones((5,5),np.uint8)
erosion?=?cv2.erode(img,kernel,iterations?=?1)
##?plot?original?and?eroded?image
titles?=?["Original?Image",?"Eroded?Image"]
images?=?[img,?erosion]
plt.figure(figsize=(20,20))
for?i?in?range(2):
????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
????plt.title(titles[i])
????plt.xticks([]),plt.yticks([])

##?import?dependencies
import?cv2
from?PIL?import?Image
import?matplotlib.pyplot?as?plt
##?reading?image
img?=?cv2.imread('text_document.jpg',?0)
##?apply?dilation
kernel?=?np.ones((5,5),np.uint8)
dilation?=?cv2.dilate(img,kernel,iterations?=?1)
##?plot?original?and?dilated?image
titles?=?["Original?Image",?"Dilated?Image"]
images?=?[img,?dilation]
plt.figure(figsize=(20,20))
for?i?in?range(2):
????plt.subplot(2,3,i+1),plt.imshow(images[i],'gray',vmin=0,vmax=255)
????plt.title(titles[i])
????plt.xticks([]),plt.yticks([])

結(jié)論
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有美顏、三維視覺(jué)、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群
個(gè)人微信(如果沒(méi)有備注不拉群!) 請(qǐng)注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會(huì)分享
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析
下載2:終身受益的編程指南:Google編程風(fēng)格指南
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!
下載3 CVPR2021 在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):CVPR,即可下載1467篇CVPR?2020論文 和 CVPR 2021 最新論文

評(píng)論
圖片
表情
