2 beinuo555 beinuo555 于 2016.03.08 19:20 提问

请教大神在opencv中怎么计算图像局部方差

请教大神在opencv中怎么计算图像局部方差, 请教大神在opencv中怎么计算图像局部方差, 请教大神在opencv中怎么计算图像局部方差,谢谢

3个回答

tangjingyunshiweifen
tangjingyunshiweifen   2016.03.09 10:48

局部,是正常的矩形还是不规则区域
矩形: 坐标的x y即像素点的x y根据长宽遍历
不规则: 我暂时没有计算过

  1. 你图像是灰阶还是RGB
  2. 如果灰阶 按照灰阶度使用公式即可,如果是RGB建议先用cvmerxx 函数忘记了 把RGB通道合成之后 在按照灰阶进行计算
tangjingyunshiweifen
tangjingyunshiweifen 回复xing_2010: p q m n 的范围 有没有溢出或者出现负数
一年多之前 回复
xing_2010
xing_2010 我求的是5×5的图像区域块,先找出图像特征点,然后求特征点周围5×5区域的方差,但是只能求出前面部分特征点周围方差,后面部分数据就会出错,显示 内存泄漏,下面是我的代码,请大神帮忙看看
接近 2 年之前 回复
xing_2010
xing_2010 我求的是5×5的图像区域块,先找出图像特征点,然后求特征点周围5×5区域的方差,但是只能求出前面部分特征点周围方差,后面部分数据就会出错,显示 内存泄漏,下面是我的代码,请大神帮忙看看
接近 2 年之前 回复
weixin_34219124
weixin_34219124   2016.03.08 21:45

你也在学opencv吗,可以交流下

xing_2010
xing_2010   2016.03.15 14:06
 cv::Mat src = cv::imread("D:\\Users\\A-spider\\Documents\\Visual Studio 2012\\Projects\\c\\c\\graf1_suo0.8.bmp"); 
        cv::Mat kk;
        cv::cvtColor(src, kk, CV_RGB2YUV);//rgb图像变成yuv图像
         imwrite("yuv.bmp",kk);

        //载入图像的数据
        IplImage *image=cvLoadImage("yuv.bmp");
        if(p<15||q<15)
              continue;
        for(m=p-2;m<=p+2;m++)
        {
            for(n=q-2;n<=q+2;n++)
            {   
                s=cvGet2D(image,n,m);
                aver+=s.val[0];         
            }
        }
        aver=aver/25;
        cvReleaseImage(&image);
         IplImage *image1=cvLoadImage("yuv.bmp");
        for(m=p-2;m<=p+2;m++)
        {
            for(n=q-2;n<=q+2;n++)
            {   
                s=cvGet2D(image1,m,n);
                var+=(s.val[0]-aver)*(s.val[0]-aver);           
            }
        }
        var=var/25;

        var=sqrt(var);
        请大神帮忙看看我这个代码哪里出错了,为什么会显示内存泄露呢,p,q为特征点坐标,程序运行出来只是显示一部分的区域方差,后面的就出现内存泄露了。
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!