census 算法


该算法分别实现了Debug版本和Release版本的调试。对原始算法做了进一步的改进,在速度和实现质量都有了很大的提高。
资源截图
代码片段和文件信息
#include 
#include   
#include   
#include   
#include   
#include   
#include   
#include   

using namespace std;

IplImage* CensusTransform(IplImage *input_image int window_size)
{
CvSize image_size=cvGetSize(input_image);
int image_width=image_size.width;
int image_height=image_size.height;

//-----Create an image of size image_width and image_height fill it with zeros -----
IplImage *modified_image = NULL; 
    switch (window_size) 
    { 
    case 3: 
        modified_image = cvCreateImage(image_size IPL_DEPTH_8U 1); 
        cvSetZero(modified_image); 
        break; 
    case 5: 
        modified_image = cvCreateImage(image_size IPL_DEPTH_32S 1); 
        cvSetZero(modified_image); 
        break; 
    default: 
        printf(“window size must be 3 or 5!
“); 
        exit(EXIT_FAILURE); 
}

//-----------census变换---------------------------------
CvMat window; 
int offset=(window_size-1)/2;
    for(int j = 0; j < image_width - window_size; j++) 
    { 
        for(int i = 0; i < image_height - window_size; i++) 
        { 
            unsigned long census = 0; 
double current_pixel=cvGetReal2D(input_imagei+offsetj+offset);
            CvRect roi = cvRect(j i window_size window_size); 
            cvGetSubRect(input_image &window roi); 
            //CvScalar m = cvAvg(&window NULL); 
 
            for(int a = 0; a             { 
                for(int b = 0; b < window_size; b++) 
                { 
if(!(a==i+offset && b==j+offset))
 census = census << 1;//左移1位 
                    
double temp_value = cvGetReal2D(&window a b); 
                    if(temp_value < current_pixel) 
                        census += 1; 

                } 
            } 
            cvSetReal2D(modified_image i+offset j+offset census); 
        } 
    } 

    return modified_image; 
}

int main(int argcchar * const argv[])
{
char* filename=“im2.png“; //图片路径
IplImage* greyImage=cvLoadImage(filename0);
if (greyImage==NULL){cout << “No valid image input.“<
int window_size=3;
time_t tstarttend;
tstart=time(0);
IplImage* ctImage=CensusTransform(greyImagewindow_size);
tend=time(0);
cout << “It took “<< difftime(tend tstart) <<“ second(s).“<< endl;

cvShowImage(“greyImage“greyImage);
cvShowImage(“ctImage“ctImage);
//cvSaveImage(“D:\My Documents\Visual Studio 2008\Projects\census\greyImage.jpg“greyImage);
//cvSaveImage(“D:\My Documents\Visual Studio 2008\Projects\census\ctImage.jpg“ctImage);

cvWaitKey(0);
cvDestroyWindow(“greyImage“);
cvDestroyWindow(“ctImage“);

return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4189  2011-12-29 12:43  census c++censuscensus.vcproj

     文件       1427  2012-01-08 19:29  census c++censuscensus.vcproj.EFAEA25E2B674A3.Administrator.user

     文件       7600  2011-12-30 18:35  census c++censusDebugBuildLog.htm

     文件        663  2011-12-29 13:21  census c++censusDebugcensus.exe.embed.manifest

     文件        728  2011-12-29 13:21  census c++censusDebugcensus.exe.embed.manifest.res

     文件        621  2011-12-30 18:35  census c++censusDebugcensus.exe.intermediate.manifest

     文件      98114  2011-12-30 18:35  census c++censusDebugmain.obj

     文件         67  2011-12-30 18:35  census c++censusDebugmt.dep

     文件     740352  2011-12-30 18:35  census c++censusDebugvc90.idb

     文件     708608  2011-12-30 18:35  census c++censusDebugvc90.pdb

     文件       2796  2012-01-08 19:29  census c++censusmain.cpp

     文件   14511104  2012-01-08 19:29  census c++census.ncb

     文件        884  2011-12-29 10:36  census c++census.sln

    ..A..H.     13824  2012-01-08 19:29  census c++census.suo

     文件      41984  2011-12-30 18:35  census c++Debugcensus.exe

     文件     620936  2011-12-30 18:35  census c++Debugcensus.ilk

     文件    1125376  2011-12-30 18:35  census c++Debugcensus.pdb

     文件     362946  2003-06-08 21:44  census c++im2.png

     文件      31993  2011-11-30 20:11  census c++L.jpg

    ..A.SH.      7680  2011-12-30 21:33  census c++Thumbs.db

     目录          0  2015-08-01 18:09  census c++censusDebug

     目录          0  2015-08-01 18:09  census c++census

     目录          0  2015-08-01 18:09  census c++Debug

     目录          0  2015-08-01 18:09  census c++

----------- ---------  ---------- -----  ----

             18281892                    24


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)