该算法分别实现了Debug版本和Release版本的调试。对原始算法做了进一步的改进,在速度和实现质量都有了很大的提高。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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
#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.em
文件 728 2011-12-29 13:21 census c++censusDebugcensus.exe.em
文件 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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)