python 用opencv實(shí)現(xiàn)圖像修復(fù)和圖像金字塔
我們將學(xué)習(xí)如何通過(guò)一種稱為修復(fù)的方法去除舊照片中的小噪音,筆畫等?;舅悸泛芎?jiǎn)單:用相鄰像素替換那些壞標(biāo)記,使其看起來(lái)像鄰域。
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í)輸入,第二個(gè)圖像是面具,第三個(gè)圖像是第一個(gè)算法的結(jié)果,最后一個(gè)圖像是第二個(gè)算法的結(jié)果。
圖像金字塔
通常,我們?cè)?jīng)使用恒定大小的圖像.但在某些情況下,我們需要使用不同分辨率的(相同)圖像.例如,在搜索圖像中的某些內(nèi)容時(shí),如臉部,我們不確定該對(duì)象在所述圖像中的大小.
具有不同分辨率的圖像被稱為圖像金字塔(因?yàn)楫?dāng)它們保持在堆疊中,底部具有最高分辨率圖像而頂部具有最低分辨率圖像時(shí),它看起來(lái)像金字塔).
圖像金字塔有兩種:
- 高斯金字塔和
- 拉普拉斯金字塔
高斯金字塔的頂部是通過(guò)將底部圖像中的連續(xù)的行和列去除得到的.頂部圖像中的每個(gè)像素值等于下一層圖像中 5 個(gè)像素的高斯加權(quán)平均值.這樣操作一次一個(gè) MxN 的圖像就變成了一個(gè) M/2xN/2 的圖像。所以這幅圖像的面積就變?yōu)樵瓉?lái)圖像面積的四分之一.這被稱為an Octave(一個(gè)八度)。連續(xù)進(jìn)行這樣的操作就會(huì)得到一個(gè)分辨率不斷下降的圖像金字塔.
函數(shù)cv2.pyrDown()從一個(gè)高分辨率大尺寸的圖像向上構(gòu)建一個(gè)金子塔 (尺寸變小,分辨率降低).
代碼:
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()從一個(gè)低分辨率小尺寸的圖像向下構(gòu)建一個(gè)金子塔(尺寸變大,但分辨率不會(huì)增加)
代碼:
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:
當(dāng)用 cv2.pyrDown(),圖像的分辨率就會(huì)降低,信息就會(huì)被丟失.如果先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實(shí)現(xiàn)圖像修復(fù)和圖像金字塔的詳細(xì)內(nèi)容,更多關(guān)于python 圖像修復(fù)和圖像金字塔的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Pytorch訓(xùn)練分類問(wèn)題時(shí),分類準(zhǔn)確率的計(jì)算方式
這篇文章主要介紹了使用Pytorch訓(xùn)練分類問(wèn)題時(shí),分類準(zhǔn)確率的計(jì)算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09python dict.get()和dict[''key'']的區(qū)別詳解
下面小編就為大家?guī)?lái)一篇python dict.get()和dict['key']的區(qū)別詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06Python深度學(xué)習(xí)之圖像標(biāo)簽標(biāo)注軟件labelme詳解
這篇文章主要介紹了Python深度學(xué)習(xí)之圖像標(biāo)簽標(biāo)注軟件labelme詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04tensorflow保持每次訓(xùn)練結(jié)果一致的簡(jiǎn)單實(shí)現(xiàn)
今天小編就為大家分享一篇tensorflow保持每次訓(xùn)練結(jié)果一致的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02python中使用時(shí)間戳timestamp問(wèn)題
文章介紹了Python中使用時(shí)間戳和時(shí)間模塊的操作,包括獲取當(dāng)前時(shí)間、計(jì)算程序運(yùn)行時(shí)間以及時(shí)間戳與時(shí)間字符串之間的轉(zhuǎn)換2025-02-02python 實(shí)現(xiàn)查詢Neo4j多節(jié)點(diǎn)的多層關(guān)系
今天小編就為大家分享一篇python 實(shí)現(xiàn)查詢Neo4j多節(jié)點(diǎn)的多層關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12