圖像金字塔

?????? 圖像金字塔被廣泛用于各種視覺應用中。圖像金字塔是一個圖像集合,集合中所有的圖像都源于同一個原始圖像,而且是通過對原始圖像連續降采樣活得,直到達到某個中止條件才停止降采樣。(當然,降為一個像素肯定是中止條件。)


????? 有兩種類型的圖像金字塔常常出現在文獻和應用中:高斯金字塔用來向下降采樣圖像,而拉普拉斯金字塔則用來從金字塔低層圖像中向上采樣重建一個圖像。


????? 要從金字塔第 i 層生成第i+1 層,我們先要用高斯核對第i 層進行卷積,然后刪除所有偶數行和偶數列。當然,新得到的圖像面積會變為源圖像的四分之一。按上述過程對輸入圖像循環執行操作就可產生整個金字塔。

????? Opencv為我們提供了從金字塔中上一級圖像生成下一級圖像的方法:cvPyrDown。同樣,我們可以通過后面相似的函數(但不是降采樣的逆操作)將現有的圖像在每個維度上都放大兩倍:cvPyrUp。在這種情況下,圖像首先在每個維度上都擴大為原來的兩倍,新增的行(偶數行)以0填充。然后給指定的濾波器進行卷積(實際上是一個在每一維上都擴大為兩倍的過濾器)去估計”丟失“像素的近似值。


????? 我們之前注意到函數cvPyrUp并不是函數cvPyrDown的逆操作。之所以這樣是因為cvPyrDown是一個會丟失信息的函數。為了恢復原來(更高的分辨率)的圖像,我們需要獲得由降采樣操作丟失的信息。

?????????

??? PyrDown ?
??? 圖像的下采樣 ?
??? void cvPyrDown( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 ); ?
??? src ?
??? 輸入圖像. ?
??? dst ?
??? 輸出圖像, 寬度和高度應是輸入圖像的一半 ,傳入前必須已經完成初始化 ?
??? filter ?
??? 卷積濾波器的類型,目前僅支持 CV_GAUSSIAN_5x5 ?
??? 函數 cvPyrDown 使用 Gaussian 金字塔分解對輸入圖像向下采樣。首先它對輸入圖像用指定濾波器進行卷積,然后通過拒絕偶數的行與列來下采樣圖像。 ?
?
? ?? PyrUp ?
??? 圖像的上采樣 ?
??? void cvPyrUp( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 ); ?
??? src ?
??? 輸入圖像. ?
??? dst ?
??? 輸出圖像, 寬度和高度應是輸入圖像的2倍 ?
??? filter ?
??? 卷積濾波器的類型,目前僅支持 CV_GAUSSIAN_5x5 ?
??? 函數 cvPyrUp 使用Gaussian 金字塔分解對輸入圖像向上采樣。首先通過在圖像中插入 0 偶數行和偶數列,然后對得到的圖像用指定的濾波器進行高斯卷積,其中濾波器乘以4做插值。所以輸出圖像是輸入圖像的 4 倍大小。(hunnish: 原理不清楚,尚待探討)?


    #include "StdAfx.h"  #include "highgui.h"    #include"cv.h"    //superdont  //blog.csdn.net/<span class="username">pinbodexiaozhu</span>  int main(int argc,char ** argv)    {    IplImage * src = cvLoadImage("guagua.bmp");    IplImage * result1 = cvCreateImage(    cvSize( src->width/2, src->height/2 ),    src->depth,    src->nChannels    );    cvPyrDown( src, result1,CV_GAUSSIAN_5x5);    IplImage * result2 = cvCreateImage(    cvSize( src->width*2, src->height*2 ),    src->depth,    src->nChannels    );    cvPyrUp( src, result2,CV_GAUSSIAN_5x5);    cvNamedWindow("source",1);  cvShowImage("source",src);  cvNamedWindow(  "PyrDown" ,1);    cvShowImage( "PyrDown", result1);    cvNamedWindow(  "PyrUp" ,1);    cvShowImage( "PyrUp",result2);    cvWaitKey(0);    cvReleaseImage(&src);   cvReleaseImage(&result1);    cvReleaseImage(&result2);    cvDestroyAllWindows();    return 0;    }    




本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255518.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255518.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255518.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python使用git進行版本控制-分支管理

1、遠程克隆 最好的方式是先創建遠程庫&#xff0c;然后&#xff0c;從遠程庫克隆&#xff1a; 首先在github上創建一個新的倉庫&#xff0c;名字叫gitskills 我們勾選Initialize this repository with a README&#xff0c;這樣GitHub會自動為我們創建一個README.md文件。 下一…

【python數字信號處理】——Z變換

目錄 一、公式 二、代碼 三、結果 一、公式 頻域變量&#xff1a;z 時域變量&#xff1a;n 常見序列的Z變換&#xff1a;信號與系統復習歸納&#xff08;十一&#xff09;&#xff1a;Z變換例題_百把人的博客-CSDN博客_z變換例題基于東南大學陳從顏譯《信號、系統和變換》和…

九宮格拼圖 支持44 55等

代碼下載轉載于:https://www.cnblogs.com/ygcool/p/5395343.html

144. Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes values. For example:Given binary tree {1,#,2,3}, 1\2/3return [1,2,3]. 該題是對樹做前序遍歷 下面分別是遞歸&#xff0c;非遞歸&#xff0c;分治三種思路的解題結果 #遞歸寫法 class Solution(object):d…

一體化點焊機將要取代分體式焊鉗在汽車制造生產線上的使用

目前大多數汽車制造廠及相關配套鈑金件廠家選用的是懸掛式點焊機及分體式焊鉗&#xff0c;從焊接變壓器的功率參數看&#xff0c;約70 % 為160KVA 的&#xff0c;約30 % 為200 kVA 的。原因主要有兩方面&#xff0c;一是新材料如鍍鋅鋼板、高強度鋼板、鋁合金板的應用&#xff…

【python數字信號處理】——線性卷積

目錄 一、公式概念 二、代碼 1、numpy庫 2、自定義打印出每一步結果 三、結果 一、公式概念 線性卷積_百度百科線性卷積(linear convolution) 在時域描述線性系統輸入和輸出之間關系的一種運算。這種運算在線性系統分析和信號處理中應用很多&#xff0c;通常簡稱卷積。中文…

activiti web流程設計器 整合視頻 教程 SSM和獨立部署的方式

本視頻為activiti工作流的web流程設計器整合視頻教程整合Acitiviti在線流程設計器(Activiti-Modeler 5.21.0 官方流程設計器&#xff09;本視頻共講了兩種整合方式1. 流程設計器和其它工作流項目分開部署的方式2. 流程設計器和SSM框架項目整合在一起的方式視頻大小 1.13 GB ~【…

移動端判斷橫屏豎屏

1. CSS判斷橫屏豎屏 寫在同一個CSS中 media screen and (orientation: portrait) {   /*豎屏 css*/} media screen and (orientation: landscape) and (min-width:450px){   /*橫屏 css*/}分開寫在2個CSS 豎屏<link rel"stylesheet" media"all and (orie…

第五章 - 圖像形態學 - 基于圖像金字塔的圖像分割(cvPyrSegmentation)

本例程涉及到幾個數據結構及方法&#xff0c;CvMemStorage、cvPyrSegmentation()、CvConnectedComp、cvGetSeqElem(). CvMemStorage CvMemStorage Growing memory storage typedef struct CvMemStorage { struct CvMemBlock* bottom;/* first allocated block */ struct CvM…

泛型參數轉換的問題

泛型不同參數類型生成的對象是相互獨立的。 //如 Tuple<string> ts; Tuple<object> to; //ts to 是兩個類型的對象。很多時候&#xff0c;我們希望實現 to ts 這種操作&#xff0c;為什么&#xff1f;因為看上去它應該如此。 為了達到這個目的&#xff0c;就要解決…

【python數字信號處理】——循環卷積(也叫圓圈卷積)

目錄 一、公式 二、代碼 方法一:遍歷 方法二:利用卷積定理 一、公式

UI-UIScrollView

- (void)viewDidLoad { [super viewDidLoad]; scrollView [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; scrollView.backgroundColor [UIColor redColor]; // 是否支持滑動最頂端 // scrollView.scrollsToTop NO; scrollView.delegate self; // 設…

[COCI2015]ZGODAN

題目大意&#xff1a;   給你一個數$n(n\leq10^1000)$&#xff0c;定義一個數是“美麗數”當且僅當這個數各個數位上的數奇偶性不同。   求最接近$n$的“美麗數”&#xff0c;若有多個&#xff0c;則依次輸出。 思路&#xff1a;   貪心高精度。   首先找出$n$的第一個…

OpenCV學習筆記(三)——Mat,圖像的新容器

自從版本2.0&#xff0c;OpenCV采用了新的數據結構&#xff0c;用Mat類結構取代了之前用extended C寫的cvMat和lplImage&#xff0c;更加好用啦&#xff0c;最大的好處就是更加方便的進行內存管理&#xff0c;對寫更大的程序是很好的消息。 需要注意的幾點&#xff1a;1. Mat的…

jq實現事件委托

事件委托首 頁產品展示公司簡介關于我們聯系我們轉載于:https://www.cnblogs.com/haley168/p/eventTarget.html

【python數字信號處理】——scipy庫設計濾波器(IIR為例)、繪制濾波器頻譜響應、IIR濾波器濾波、讀寫wav音頻文件

目錄 一、參考文獻 1、scipy接口 2、scipy庫介紹+IIR濾波器設計(含GUI)+繪制頻譜響應

關于SQL查詢效率,100w數據,查詢只要1秒

原文:關于SQL查詢效率&#xff0c;100w數據&#xff0c;查詢只要1秒1.關于SQL查詢效率&#xff0c;100w數據&#xff0c;查詢只要1秒&#xff0c;與您分享:機器情況p4: 2.4內存: 1 Gos: windows 2003數據庫: ms sql server 2000目的: 查詢性能測試,比較兩種查詢的性能SQL查詢效…

OpenCV學習筆記(五十四)——概述FaceRecognizer人臉識別類contrib

在最新版的2.4.2中&#xff0c;文檔的更新也是一大亮點&#xff0c;refrence manual擴充了200多頁的內容&#xff0c;添加了contrib部分的文檔。contrib就是指OpenCV中新添加的模塊&#xff0c;但又不是很穩定&#xff0c;可以認為是一個雛形的部分。這次結合refman的閱讀&…

【調試】Linux下超強內存檢測工具Valgrind

【調試】Linux下超強內存檢測工具Valgrind 內容簡介 Valgrind是什么&#xff1f;Valgrind的使用Valgrind詳細教程1. Valgrind是什么&#xff1f; Valgrind是一套Linux下&#xff0c;開放源代碼&#xff08;GPLV2&#xff09;的仿真調試工具的集合。Valgrind由內核&#xff08;c…

【python學習】——讀取csv文件

file_name rD:\ParttimeJobs\MinistConfiguration\datas\mnist_train.csv # 數據集為42000張帶標簽的28x28手寫數字圖像y []x []y_t []x_t []with open(file_name, r) as f:reader csv.reader(f)header_row next(reader)# print(header_row)for row in reader:if np.ra…