opencv图像处理9-图像金字塔
生活随笔
收集整理的這篇文章主要介紹了
opencv图像处理9-图像金字塔
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
圖像金字塔在分割和匹配方面有重要用途,其中在sift匹配中是重要的一環~~
先看效果:
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 倍大小。
關于卷積的實現請看另一篇博客:http://blog.csdn.net/renshengrumenglibing/article/details/6940120
#include "highgui.h" ? #include"cv.h" ?//superdont //blog.csdn.net/superdont int main() ? { ?IplImage * src = cvLoadImage("1.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" ? , CV_WINDOW_AUTOSIZE);cvNamedWindow( ?"PyrDown" ,CV_WINDOW_AUTOSIZE); ?cvNamedWindow( ?"PyrUp" ? ,CV_WINDOW_AUTOSIZE); ?cvShowImage("source",src);cvShowImage( "PyrDown", result1); ?cvShowImage( "PyrUp",result2); ?cvWaitKey(0); ?cvReleaseImage(&src);?cvReleaseImage(&result1); ?cvReleaseImage(&result2); ?cvDestroyAllWindows(); ?return 0; ? } ?轉載于:https://www.cnblogs.com/libing64/archive/2011/11/06/2878750.html
總結
以上是生活随笔為你收集整理的opencv图像处理9-图像金字塔的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 应用软件开发(九)控件续
- 下一篇: sharepoint 2010 使用Wi