python 用opencv實現(xiàn)圖像修復和圖像金字塔
我們將學習如何通過一種稱為修復的方法去除舊照片中的小噪音,筆畫等?;舅悸泛芎唵危河孟噜徬袼靥鎿Q那些壞標記,使其看起來像鄰域。
cv2.inpaint()
- cv2.INPAINT_TELEA
- cv2.INPAINT_NS
import numpy as np
import cv2 as cv
img = cv.imread('messi_2.jpg')
mask = cv.imread('mask2.png',0)
dst = cv.inpaint(img,mask,3,cv.INPAINT_TELEA)
cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()
第一張圖顯示降級輸入,第二個圖像是面具,第三個圖像是第一個算法的結果,最后一個圖像是第二個算法的結果。

圖像金字塔
通常,我們曾經(jīng)使用恒定大小的圖像.但在某些情況下,我們需要使用不同分辨率的(相同)圖像.例如,在搜索圖像中的某些內(nèi)容時,如臉部,我們不確定該對象在所述圖像中的大小.
具有不同分辨率的圖像被稱為圖像金字塔(因為當它們保持在堆疊中,底部具有最高分辨率圖像而頂部具有最低分辨率圖像時,它看起來像金字塔).
圖像金字塔有兩種:
- 高斯金字塔和
- 拉普拉斯金字塔
高斯金字塔的頂部是通過將底部圖像中的連續(xù)的行和列去除得到的.頂部圖像中的每個像素值等于下一層圖像中 5 個像素的高斯加權平均值.這樣操作一次一個 MxN 的圖像就變成了一個 M/2xN/2 的圖像。所以這幅圖像的面積就變?yōu)樵瓉韴D像面積的四分之一.這被稱為an Octave(一個八度)。連續(xù)進行這樣的操作就會得到一個分辨率不斷下降的圖像金字塔.
函數(shù)cv2.pyrDown()從一個高分辨率大尺寸的圖像向上構建一個金子塔 (尺寸變小,分辨率降低).
代碼:
import cv2
img = cv2.imread('img.jpg')
lower_reso = cv2.pyrDown(img)
cv2.imshow('src',img)
cv2.imshow('HigherReso',lower_reso)
cv2.waitKey()

繼續(xù)使用函數(shù)cv2.pyrUp()從一個低分辨率小尺寸的圖像向下構建一個金子塔(尺寸變大,但分辨率不會增加)
代碼:
import cv2
img = cv2.imread('img.jpg')
lower_reso = cv2.pyrDown(img)
higher_reso2 = cv2.pyrUp(lower_reso)
cv2.imshow('show',higher_reso2)
cv2.waitKey()

NOTE:
當用 cv2.pyrDown(),圖像的分辨率就會降低,信息就會被丟失.如果先cv2.pyrDown()產(chǎn)生的中間圖像再使用函數(shù)cv2.pyrUp()得到圖像,與原圖像相比分辨率差了很多.
可以修改代碼:
import cv2
img = cv2.imread('img.jpg')
higher_reso2 = cv2.pyrUp(img)
lower_reso = cv2.pyrDown(higher_reso2)
cv2.imshow('show',lower_reso)
cv2.waitKey()
拉普拉斯金字塔由高斯金字塔形成,大部分元素都是零,用于圖像壓縮.
代碼:
import cv2
img = cv2.imread('img.jpg')
img = cv2.Canny(img, 100, 200)
higher_reso2 = cv2.pyrUp(img)
lower_reso = cv2.pyrDown(higher_reso2)
cv2.imshow('src',img)
cv2.imshow('higher_reso2',higher_reso2)
cv2.imshow('lower_reso',lower_reso)
cv2.waitKey()

以上就是python 用opencv實現(xiàn)圖像修復和圖像金字塔的詳細內(nèi)容,更多關于python 圖像修復和圖像金字塔的資料請關注腳本之家其它相關文章!
相關文章
python dict.get()和dict[''key'']的區(qū)別詳解
下面小編就為大家?guī)硪黄猵ython dict.get()和dict['key']的區(qū)別詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
tensorflow保持每次訓練結果一致的簡單實現(xiàn)
今天小編就為大家分享一篇tensorflow保持每次訓練結果一致的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python 實現(xiàn)查詢Neo4j多節(jié)點的多層關系
今天小編就為大家分享一篇python 實現(xiàn)查詢Neo4j多節(jié)點的多層關系,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12

