<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
平時你聽到、見到的金字塔是什麼樣的?
這樣?
還是這樣?
實際上除了這些,還有影象金字塔
影象金字塔有什麼用?為什麼要稱作影象金字塔?本文帶你研究這些問題。
正如生物視覺系統會處理分層次的尺寸一樣,計算機視覺系統實現多解析度影象處理的基礎是影象金字塔。
考慮這樣一個場景:輸入系統一幅影象來檢測人臉。由於事先並不知道人臉在這張圖片中可能的尺寸,所以需要根據輸入生成一個不同大小影象組成的金字塔(應用時常用向量儲存),掃描不同層次來檢測可能的人臉。
此外,影象金字塔在保持細節的條件下進行影象融合等多尺度編輯操作非常有用。
影象金字塔分為兩種:
高斯金字塔
高斯金字塔是最基本的影象金字塔,用於獲得原影象尺度連續的的降取樣序列。高斯金字塔共分O組(Octave),每組分為S層(Layer)。組內各層影象解析度相同但尺度逐層遞增;組間影象按隔點降取樣取得。
拉普拉斯金字塔
拉普拉斯金字塔通過高斯差分得到殘差影象序列,用於影象重建、影象融合、特徵點檢測等。具體做法如圖所示:構造高斯金字塔,每組影象內相鄰兩層相減得到殘差影象序列,從而得到拉普拉斯金字塔。所以高斯金字塔每組有s+3層,而拉普拉斯金字塔每組只有s層。
前面已經提到,影象金字塔的作用主要有:
下面給出一個基於影象金字塔的影象融合演演算法。
1.選擇待融合影象A與B,以及融合掩碼M,並重取樣使之具有相同大小;
2.分別取得A、B的拉普拉斯金字塔,以及M的高斯金字塔;
3.使用M的高斯金字塔作為加權,對A、B的每層特徵進行融合,得到融合金字塔;
4.融合金字塔仍為拉普拉斯金字塔,對其影象重建得到融合影象。
上面的圖可能有點抽象,看看下面的例子。
主函數非常簡單易懂
int main() { Mat img_1 = imread("1.jpg", 1); Mat img_2 = imread("2.jpg", 1); Mat dstImg; imgFusion(img_1, img_2, dstImg, 0.2); waitKey(0); return 0; }
試試效果
原圖
融合效果圖
是不是毫無違和感?其中關鍵的融合函數imgFusion()具體是如何實現的呢?
void imgFusion(Mat leftImg, Mat rightImg, Mat& dstImg, float threshold) { vector<Mat> gaussPyrLeft, gaussPyrRight, laplacePyrLeft, laplacePyrRight; // 宣告高斯金字塔資料結構 vector<Mat> maskGaussPyr; // 宣告掩碼的高斯金字塔 vector<Mat> blendLapPyr; // 宣告融合拉普拉斯金字塔 Mat imgHighest; // 宣告影象融合的起點影象 Mat mask = Mat::zeros(PYRHEIGHT, PYRWIDTH, CV_32FC1); // 構造掩碼,大小與金字塔原影象相同 mask(Range::all(), Range(mask.cols * threshold, mask.cols)) = 1.0; cvtColor(mask, mask, COLOR_GRAY2BGR); // 將掩碼顏色通道拓展,以適配原影象 buildGaussPyr(mask, maskGaussPyr, 3); // 建立掩碼的高斯金字塔 resize(leftImg, leftImg, Size(PYRWIDTH, PYRHEIGHT)); resize(rightImg, rightImg, Size(PYRWIDTH, PYRHEIGHT)); leftImg.convertTo(leftImg, CV_32F); //轉換成CV_32F, 用於和mask型別匹配,且CV_32F 型別精度高, 有利於計算 rightImg.convertTo(rightImg, CV_32F); // 建立高斯金字塔與拉普拉斯金字塔 buildGaussPyr(leftImg, gaussPyrLeft, 3); buildGaussPyr(rightImg, gaussPyrRight, 3); buildLaplacePyr(gaussPyrLeft, laplacePyrLeft, 3); buildLaplacePyr(gaussPyrRight, laplacePyrRight, 3); // 確定起點影象 imgHighest = gaussPyrLeft.back().mul(maskGaussPyr.back()) + ((gaussPyrRight.back()).mul(Scalar(1.0, 1.0, 1.0) - maskGaussPyr.back())); // 融合拉普拉斯金字塔 blendLaplacePyr(laplacePyrLeft, laplacePyrRight, maskGaussPyr, blendLapPyr); // 融合影象重建 dstImg = imgLaplaceBlend(imgHighest, blendLapPyr); dstImg.convertTo(dstImg, CV_8UC3); imshow("imgProcess::seamOpt_laplace", dstImg); }
完整原始碼 提取碼:1234
到此這篇關於C++ OpenCV學習之影象金字塔與影象融合詳解的文章就介紹到這了,更多相關C++ OpenCV影象金字塔內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45