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 的范围 有没有溢出或者出现负数
接近 2 年之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
图像局部均值、中值、方差求取结合opencv
结合opencv求取图像的局部均值、中值、方差; //src 为待处理图像 //indexrows 为图像遍历的行数 //indexcols 为图像遍历的列数 //meanv 保存均值 //ker 窗口大小 //均值求取 void Meanvalue(Mat& src, int indexrows, int indexcols, float* meanv, int ker) { int lo
积分图像的应用(一):局部标准差
局部标准差在图像处理邻域具有广泛的应用,但是直接计算非常耗时,本文利用积分图像技术对局部标准差进行快速计算。 标准差定义如下(采用统计学中的定义,分母为): 其中。 为了计算图像的局部标准差,首先设定局部区域的大小为 ,则局部区域的像素点个数 。 对标准差的公式进行化简: 因,故: 可以看出,局部标准差计算中需要对图像与进行局部求和操作,即和。
opencv计算图像方差
计算图像方差,非常简单,用这种计算任意格式的数字图像
基于Opencv计算图像的均值和方差
实现每幅图像的每一个通道求均值和方差。 //这里是三通道的图像     for(i=0;i     {         m[i]=0;         for(x=0;xheight;x++)         {             uchar *ptr=(uchar*)(src->imageData+x*src->widthStep);//每一行的起点wisthstep是以字节
OpenCV 自学笔记33. 计算图像的均值、标准差和平均梯度
OpenCV 自学笔记33. 计算图像的均值、标准差和平均梯度均值、标准差和平均梯度是验证图像质量的常用指标。其中: 均值反映了图像的亮度,均值越大说明图像亮度越大,反之越小; 标准差反映了图像像素值与均值的离散程度,标准差越大说明图像的质量越好; 平均梯度反映了图像的清晰度和纹理变化,平均梯度越大说明图像越清晰; 那么,如何使用OpenCV计算图像的均值、标准差和平均梯度呢?OpenCV提供了几个
基于局部均方差的图像局部对比度增强算法
基于局部均方差的图像局部对比度增强算法 1.基于局部均方差增强原理       我们知道图像的高频部分代表的是图像中类似边缘的高频分量;底频部分代表的是图像中较为平坦的部分。假若用原始图像减去图像中低频部分的,那么得到的就是图像的高频分量。这个方法和直接把原始图像通过高通滤波的方式得到的图像相一致,最后都是得到图像的高频部分。而这一部分我们可以适当的进行增强,是图像变得较为清晰。但是需
求图像局部最大值
应组长需求,需要得到图像中的局部最大值,他跟我说的思路是用滑动窗口来实现,在每个滑动窗口里面求一个最大值。在opencv里面找了一下,没有现成的函数,就开始打算梯度算子来求,我开始查找sobel算子的东西,找到了opencv中的函数 void Sobel(InputArray src, OutputArray dst, int ddepth, int xorder, int yorder, in
OpenCV 计算均值方差
cv::Mat img; Scalar mean; Scalar stddev; cv::meanStdDev ( img, mean, stddev ); uchar mean_pxl = mean.val[0]; uchar stddev_pxl = stddev.val[0]; 
opencv实现简单的局部极大值求解
前言 实现类似matlab的findpeaks功能。 http://cn.mathworks.com/help/signal/ref/findpeaks.html#buhdm28-1 局部极大值求解 //src: 输入数据 //minPeakDistance: 相邻两个局部极大值的最小间距。 //minHeightDiff: kernelSize范围内极大值与极小值的最小差值。与m
Opencv---计算图像直方图方差和均值
Abstrcat:本文主要讲解如何计算图像直方图的方差和均值1.求解一个图像的直方图,原图需要为灰度图,代码如下:(首先需要申明通道和直方图的范围)const int channels[1]={0};const int histSize[1]={256};float hranges[2]={0,255};const float* ranges[1]={hranges};MatND hist;Mat