您好,登錄后才能下訂單哦!
這篇文章主要介紹了OpenCV如何如何圖像金字塔,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1.高斯金字塔
2.拉普拉斯金字塔
本文主要介紹了OpenCV 圖像金字塔,具有一定的參考價值,感興趣的可以了解一下
高斯金字塔reduce | void cv::pyrDown() |
expand | void cv::pyrUp() |
圖像金字塔是對一張輸入圖像先模糊再下采樣為原來的高、寬的1/2,不斷重復模糊與下采樣的過程就得到了不同分辨率的輸出圖像,疊加在一起就形成了圖像金字塔。
高斯金字塔便是先進行高斯模糊,再進行reduce和expand操作。高斯金字塔中的較高級別(低分辨率)是通過刪除較低級別(較高分辨率)圖像中的連續行和列而形成的。然后,較高級別的每個像素由基礎級別的5個像素的貢獻與高斯權重形成。通過這樣做,M×N圖像變成M/2×N/2圖像。因此面積減少到原始面積的四分之一。它稱為Octave。
cv::pryDown()
C++ void cv::pyrDown(cv::InputArray src, cv::OutputArray dst, const cv::Size &dstsize = cv::Size(), int borderType = 4)
cv::pryUp()
C++ void cv::pyrUp(cv::InputArray src, cv::OutputArray dst, const cv::Size &dstsize = cv::Size(), int borderType = 4)
在高斯金字塔的運算過程中,圖像經過卷積和下采樣操作會丟失部分高頻細節信息。為描述這些高頻信息,人們定義了拉普拉斯金字塔(Laplacian Pyramid, LP)。用高斯金字塔的每一層圖像減去其上一層圖像上采樣并高斯卷積之后的預測圖像,得到一系列的差值圖像即為 LP 分解圖像。首先要進行金字塔的reduce操作,再expand操作,最后相減得到拉普拉斯金字塔。 L=G-expand(reduce(G))
代碼1:
#include<opencv2/opencv.hpp> #include<iostream> #include<imgproc.hpp> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat image = imread("C:/Users/YY/Pictures/Saved Pictures/1.jpg"); Mat out; imshow("原圖", image); pyrDown(image, out); imshow("降采樣", out); pyrUp(out, out); imshow("上采樣", out); subtract(image, out, out); imshow("拉普拉斯金字塔", out); waitKey(0); destroyAllWindows(); return 0; }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“OpenCV如何如何圖像金字塔”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。