2012年3月13日

影像處理:直方圖等化



1 則留言:

  1. #include
    #include
    #include
    #include
    using namespace std;

    int His_Arr_src[256]={0};
    int His_Arr_dst[256]={0};

    int main()
    {
    int img_num=0;
    cout<<"請輸入圖片號碼"<>img_num;
    IplImage *src,*dst,*com_img_src,*com_img_dst;
    if(img_num==1)
    {
    src=cvLoadImage("D:\\img\\Airport1.bmp",-1);
    dst=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
    }

    if(img_num==2)
    {
    src=cvLoadImage("D:\\img\\Airport2.bmp",-1);
    dst=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
    }

    if(img_num==3)
    {
    src=cvLoadImage("D:\\img\\Airport3.bmp",-1);
    dst=cvCreateImage(cvGetSize(src),IPL_DEPTH_8U,1);
    }

    com_img_src=cvCreateImage(cvSize(512,512),IPL_DEPTH_8U,1);
    com_img_dst=cvCreateImage(cvSize(512,512),IPL_DEPTH_8U,1);
    CvScalar His_src,His_dst;
    int com;
    cvEqualizeHist(src,dst);

    for(int i=0;iheight;i++)
    {
    for(int j=0;jwidth;j++)
    {
    His_src=cvGet2D(src,i,j);
    His_dst=cvGet2D(dst,i,j);
    com=His_src.val[0];
    His_Arr_src[com]++;
    com=His_dst.val[0];
    His_Arr_dst[com]++;
    }
    }

    for(int i=0;i<255;i++)
    {
    cvRectangle(com_img_src,cvPoint(i,512-(His_Arr_src[i]/100)),cvPoint(i+2,512),cvScalar(255,255,255),CV_FILLED,8,0);
    cvRectangle(com_img_dst,cvPoint(i,512-(His_Arr_dst[i]/100)),cvPoint(i+2,512),cvScalar(255,255,255),CV_FILLED,8,0);
    }

    cvNamedWindow("src",CV_WINDOW_AUTOSIZE);
    cvNamedWindow("dst",CV_WINDOW_AUTOSIZE);
    cvShowImage("src",src);
    cvShowImage("dst",dst);
    cvNamedWindow("com_img_src",CV_WINDOW_AUTOSIZE);
    cvShowImage("com_img_src",com_img_src);
    cvNamedWindow("com_img_dst",CV_WINDOW_AUTOSIZE);
    cvShowImage("com_img_dst",com_img_dst);


    cvWaitKey(0);
    cvDestroyWindow("src");
    cvReleaseImage(&src);

    cvDestroyWindow("dst");
    cvReleaseImage(&dst);

    cvDestroyWindow("com_img_src");
    cvReleaseImage(&com_img_src);

    cvDestroyWindow("com_img_dst");
    cvReleaseImage(&com_img_dst);


    }

    回覆刪除