From: Dominic L. <ma...@us...> - 2005-05-17 14:54:40
|
Update of /cvsroot/robotflow/RobotFlow/Vision/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1349 Modified Files: CvBiModalTest.cc Log Message: Extracting symbols Index: CvBiModalTest.cc =================================================================== RCS file: /cvsroot/robotflow/RobotFlow/Vision/src/CvBiModalTest.cc,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CvBiModalTest.cc 17 May 2005 14:06:51 -0000 1.1 --- CvBiModalTest.cc 17 May 2005 14:54:29 -0000 1.2 *************** *** 1,4 **** ! #ifndef _CVFINDCONTOURS_CC_ ! #define _CVFINDCONTOURS_CC_ #include "BufferedNode.h" --- 1,4 ---- ! #ifndef _CVBIMODALTEST_CC_ ! #define _CVBIMODALTEST_CC_ #include "BufferedNode.h" *************** *** 52,55 **** --- 52,59 ---- * @output_description Image with contours drawed. * + * @output_name BINARIZED_IMG + * @output_type Image + * @output_description binarized image + * END*/ *************** *** 61,64 **** --- 65,76 ---- IplImage *m_mask; IplImage *m_edges; + IplImage *m_gray; + IplImage *m_binarized; + + int m_imageInID; + int m_imageOutID; + int m_binImageOutID; + double m_minDist; + double m_maxStd; public: *************** *** 69,72 **** --- 81,85 ---- m_imageInID = addInput("IN_IMAGE"); m_imageOutID = addOutput("CONTOUR_IMG"); + m_binImageOutID = addOutput("BINARIZED_IMG"); m_minDist = dereference_cast<float>(parameters.get("MIN_DIST")); *************** *** 79,83 **** m_mask = cvCreateImage( cvSize(320,240), IPL_DEPTH_8U, 1 ); m_edges = cvCreateImage( cvSize(320,240), IPL_DEPTH_8U, 1 ); ! } --- 92,97 ---- m_mask = cvCreateImage( cvSize(320,240), IPL_DEPTH_8U, 1 ); m_edges = cvCreateImage( cvSize(320,240), IPL_DEPTH_8U, 1 ); ! m_gray = cvCreateImage( cvSize(320,240), IPL_DEPTH_8U, 1 ); ! m_binarized = cvCreateImage( cvSize(320,240), IPL_DEPTH_8U, 1 ); } *************** *** 87,94 **** cvReleaseImage(&m_mask); cvReleaseImage(&m_edges); ! } ! bool processRect(CvRect rect, IplImage *src, IplImage *dest, double std_max, double min_dist) { //Set Region of interest --- 101,117 ---- cvReleaseImage(&m_mask); cvReleaseImage(&m_edges); ! cvReleaseImage(&m_gray); ! cvReleaseImage(&m_binarized); } ! void binarize(CvRect rect, IplImage *src, IplImage *dest, double threshold) { ! cvSetImageROI(src,rect); ! cvSetImageROI(dest,rect); ! cvThreshold(src,dest,threshold,255,CV_THRESH_BINARY); ! ! } ! ! ! bool processRect(CvRect rect, IplImage *src, IplImage *dest, double std_max, double min_dist, double *threshold = 0) { //Set Region of interest *************** *** 156,160 **** if (dist1 <= dist2) { //DIST1 SMALLER, SET MASK PROPERLY FOR MEAN FUNCTION TO BE CALCULATED PROPERLY ! *maskPtr = 1; nb[0]++; } else { --- 179,184 ---- if (dist1 <= dist2) { //DIST1 SMALLER, SET MASK PROPERLY FOR MEAN FUNCTION TO BE CALCULATED PROPERLY ! *maskPtr = 1; ! nb[0]++; } else { *************** *** 218,222 **** stddev2.val[2] * stddev2.val[2]); ! if (mean_dist > min_dist /*&& --- 242,249 ---- stddev2.val[2] * stddev2.val[2]); ! //BINARIZATION THRESHOLD CALCULATION (IF REQUIRED) ! if (threshold) { ! *threshold = (mean1.val[0] + mean2.val[0] + mean1.val[1] + mean2.val[1] + mean1.val[2] + mean2.val[2]) / 6.0; ! } if (mean_dist > min_dist /*&& *************** *** 238,246 **** //copy source image memcpy(m_src->imageData, imageRef->get_data(), imageRef->get_size()); ! ! ! ! ! //reset ROI cvResetImageROI(m_src); --- 265,269 ---- //copy source image memcpy(m_src->imageData, imageRef->get_data(), imageRef->get_size()); ! //reset ROI cvResetImageROI(m_src); *************** *** 248,254 **** --- 271,282 ---- cvResetImageROI(m_mask); cvResetImageROI(m_edges); + cvResetImageROI(m_gray); + cvResetImageROI(m_binarized); cvCopy(m_src,m_dest,NULL); + //clear binarized image + memset(m_binarized->imageData,0xFF,320*240); + struct timeb t1, t2; ftime(&t1); *************** *** 277,283 **** */ //EDGE MODE ! cvCvtColor(m_src, m_edges, CV_BGR2GRAY); ! cvSmooth(m_edges,m_edges,CV_GAUSSIAN,3); ! cvCanny(m_edges, m_edges, 128, 255, 3); CvMemStorage* storage = cvCreateMemStorage(0); --- 305,311 ---- */ //EDGE MODE ! cvCvtColor(m_src, m_gray, CV_BGR2GRAY); ! cvSmooth(m_gray,m_gray,CV_GAUSSIAN,3); ! cvCanny(m_gray, m_edges, 128, 255, 3); CvMemStorage* storage = cvCreateMemStorage(0); *************** *** 290,302 **** CvRect rect = cvBoundingRect(contour,0); ! ! if (processRect(rect,m_src,m_dest,m_maxStd,m_minDist)) { ! CvScalar color = CV_RGB(255,0,0); ! CvPoint p1,p2; ! p1.x = rect.x; ! p1.y = rect.y; ! p2.x = rect.x + rect.width; ! p2.y = rect.y + rect.height; ! cvRectangle(m_dest,p1,p2,color); } } --- 318,339 ---- CvRect rect = cvBoundingRect(contour,0); ! double threshold; ! ! if (processRect(rect,m_src,m_dest,m_maxStd,m_minDist, &threshold)) { ! ! //filter too big regions ! if (rect.width < 100 & ! rect.height < 100) { ! CvScalar color = CV_RGB(255,0,0); ! CvPoint p1,p2; ! p1.x = rect.x; ! p1.y = rect.y; ! p2.x = rect.x + rect.width; ! p2.y = rect.y + rect.height; ! cvRectangle(m_dest,p1,p2,color); ! ! //void binarize(CvRect rect, IplImage *src, IplImage *dest, double threshold) { ! binarize(rect,m_gray,m_binarized,threshold); ! } } } *************** *** 310,319 **** Image *m_outImg = Image::alloc( imageRef->get_width(), imageRef->get_height(), 3); //Copy destination image (convert from CV format) ! memcpy(m_outImg->get_data(), m_dest->imageData, m_outImg->get_size()); ! ! if( output_id == m_imageOutID ) { ! out[count] = ObjectRef(m_outImg); ! } } catch (BaseException *e) { --- 347,360 ---- Image *m_outImg = Image::alloc( imageRef->get_width(), imageRef->get_height(), 3); + Image *m_binImg = Image::alloc( imageRef->get_width(), imageRef->get_height(), 1); + //Copy destination image (convert from CV format) ! memcpy(m_outImg->get_data(), m_dest->imageData, m_outImg->get_size()); ! (*outputs[m_imageOutID].buffer)[count] = ObjectRef(m_outImg); ! ! ! memcpy(m_binImg->get_data(), m_binarized->imageData,m_binImg->get_size()); ! (*outputs[m_binImageOutID].buffer)[count] = ObjectRef(m_binImg); ! } catch (BaseException *e) { *************** *** 322,331 **** } ! private: ! int m_imageInID; ! int m_imageOutID; ! ! double m_minDist; ! double m_maxStd; }; --- 363,367 ---- } ! }; |