精华内容
下载资源
问答
  • 线直方图-旋转矩形区域直方图的快速方法
  • 基于区域直方图统计的灰度图像色彩传递方法,赵源萌,王岭雪,应用直方图统计法描述图像的区域纹理,研究提出基于区域直方图纹理描述的灰度图像色彩传递处理方法。方法首先为待彩色化处理的灰
  • # -*- coding: utf-8 -*-"""计算彩色图像各通道的直方图及图像区域直方图"""import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltimg = cv.imread('../../../../datas/images/fish.jpg')color =...

    # -*- coding: utf-8 -*-

    """

    计算彩色图像各通道的直方图及图像区域直方图

    """

    import cv2 as cv

    import numpy as np

    from matplotlib import pyplot as plt

    img = cv.imread('../../../../datas/images/fish.jpg')

    color = ('b','g','r')

    plt.subplot(121)

    plt.imshow(img)

    plt.subplot(122)

    for i,col in enumerate(color):

    histr = cv.calcHist([img],[i],None,[256],[0,256])

    plt.plot(histr,color = col)

    plt.xlim([0,256])

    # 使用Mask计算某区域直方图

    img_gray = cv.cvtColor(img,cv.COLOR_RGB2GRAY)

    mask = np.zeros(img_gray.shape[:2],np.uint8)

    mask[100:200,100:200] = 255

    masked_img = cv.bitwise_and(img_gray,img_gray,mask = mask)

    hist_full = cv.calcHist([img],[0],None,[256],[0,256])

    hist_mask = cv.calcHist([img],[0],mask,[256],[0,256])

    plt.figure()

    plt.subplot(221)

    plt.imshow(img_gray,'gray')

    plt.subplot(222)

    plt.imshow(mask,'gray')

    plt.subplot(223)

    plt.imshow(masked_img,'gray')

    plt.subplot(224)

    plt.plot(hist_full)

    plt.plot(hist_mask)

    plt.xlim([0,256])

    plt.show()

    展开全文
  • # -*- coding: utf-8 -*-"""计算彩色图像各通道的直方图及图像区域直方图"""import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltimg = cv.imread('../../../../datas/images/fish.jpg')color =...

    # -*- coding: utf-8 -*-

    """

    计算彩色图像各通道的直方图及图像区域直方图

    """

    import cv2 as cv

    import numpy as np

    from matplotlib import pyplot as plt

    img = cv.imread('../../../../datas/images/fish.jpg')

    color = ('b','g','r')

    plt.subplot(121)

    plt.imshow(img)

    plt.subplot(122)

    for i,col in enumerate(color):

    histr = cv.calcHist([img],[i],None,[256],[0,256])

    plt.plot(histr,color = col)

    plt.xlim([0,256])

    # 使用Mask计算某区域直方图

    img_gray = cv.cvtColor(img,cv.COLOR_RGB2GRAY)

    mask = np.zeros(img_gray.shape[:2],np.uint8)

    mask[100:200,100:200] = 255

    masked_img = cv.bitwise_and(img_gray,img_gray,mask = mask)

    hist_full = cv.calcHist([img],[0],None,[256],[0,256])

    hist_mask = cv.calcHist([img],[0],mask,[256],[0,256])

    plt.figure()

    plt.subplot(221)

    plt.imshow(img_gray,'gray')

    plt.subplot(222)

    plt.imshow(mask,'gray')

    plt.subplot(223)

    plt.imshow(masked_img,'gray')

    plt.subplot(224)

    plt.plot(hist_full)

    plt.plot(hist_mask)

    plt.xlim([0,256])

    plt.show()

    展开全文
  • 自适应区域直方图均衡,用于图像增强,适用于超声图像,对超声图像的灰度增强又很好效果
  • 计算彩色图像各通道的直方图及图像区域直方图 """ import cv2 as cv import numpy as np from matplotlib import pyplot as plt img = cv.imread('../../../../datas/images/fish.jpg') color = ('b...

     

    # -*- coding: utf-8 -*-
    """
    计算彩色图像各通道的直方图及图像区域直方图
    """
    import cv2 as cv
    import numpy as np
    from matplotlib import pyplot as plt
    
    img = cv.imread('../../../../datas/images/fish.jpg')
    color = ('b','g','r')
    plt.subplot(121)
    plt.imshow(img)
    plt.subplot(122)
    for i,col in enumerate(color):
        histr = cv.calcHist([img],[i],None,[256],[0,256])
        plt.plot(histr,color = col)
        plt.xlim([0,256])
    
    # 使用Mask计算某区域直方图
    img_gray = cv.cvtColor(img,cv.COLOR_RGB2GRAY)
    mask = np.zeros(img_gray.shape[:2],np.uint8)
    mask[100:200,100:200] = 255
    masked_img = cv.bitwise_and(img_gray,img_gray,mask = mask)
    hist_full = cv.calcHist([img],[0],None,[256],[0,256])
    hist_mask = cv.calcHist([img],[0],mask,[256],[0,256])
    
    plt.figure()
    plt.subplot(221)
    plt.imshow(img_gray,'gray')
    plt.subplot(222)
    plt.imshow(mask,'gray')
    plt.subplot(223)
    plt.imshow(masked_img,'gray')
    plt.subplot(224)
    plt.plot(hist_full)
    plt.plot(hist_mask)
    plt.xlim([0,256])
    
    
    plt.show()
    展开全文
  • 图像任意子区域直方图快速计算

    千次阅读 2017-01-11 22:27:10
    下面介绍一种快速计算图像任意子区域直方图的方法,方法实现的过程描述如下:假设最终得到的直方图箱子数(通俗点就是直方图的横坐标的单位数)为nplanes,nplanes是2的幂;输入的灰度图大小为rows*cols。首先创建一

    当逐像素地对像素进行邻域操作时(比如邻域求和,求邻域图像块的直方图等),运算量就会很大。这个时候可以想到用积分图像,可以这样看,积分图像是占用了前期时间,减少了后期大量重复运算。

    下面介绍一种快速计算图像任意子区域直方图的方法,方法实现的过程描述如下:

    假设最终得到的直方图箱子数(通俗点就是直方图的横坐标的单位数)为nplanes,nplanes是2的幂;输入的灰度图大小为rows*cols。

    首先创建一个rows*cols大小、nplanes个通道的图像planes,可以将每个通道理解为二维的箱子(而通常直方图的箱子都是一维的);

    然后将planes的每个通道按一定规则填充二值图像,在当前通道的某位置,若源图像该位置的灰度值属于该箱子则值为1,否则为0;

    //将灰度图转化为二值图的多通道图像
    //nplanes为通道数,可以是256,128,...必须是2的幂,其实就是减色
    void convertToBinaryPlane(const cv::Mat& input,cv::Mat& output,int nplanes)
    {
        //屏蔽位数
        int n = 8 - static_cast<int>(log(static_cast<float>(nplanes)) / log(2.0));
        uchar mask = 0xff << n;
        //减色后的输入图像
        cv::Mat reduced;
        reduced=input & mask;
        //计算每个二值平面
        std::vector<cv::Mat> planes;
        for (int i = 0; i < nplanes; i++)
        {
            planes.push_back(reduced==(i<<n)&0x1);
        }
        //创建多通道图像
        cv::merge(planes,output);//planes和output仅仅是形式的区别,一个vector,一个是mat。所以这里output即是叙述中的planes,
    }

    再计算planes的积分图像。

    最后任意划出一块区域,就可以利用积分图像分别计算每个箱子的值,每个箱子只需要计算4次(2次加法2次减法),计算复杂度为nplanes*4。

    //后两步包括计算积分图像和计算任意区域直方图,通过一个很巧妙的模板类来实现
    
    template<typename T,int N>
    class IntegralImage
    {
    private:
        cv::Mat integralImage;
    public:
        IntegralImage(cv::Mat image)
        {
            //计算积分图像,很耗时,待计算的图像大小为cols*rows*N
            cv::integral(image, integralImage, cv::DataType<T>::type);
        }
    
        //共N层,每层返回一个数,总的就是一个vector,或者说N行1列的Mat。
        //这样就通过()操作符,实现了就算任意子区域直方图计算
        cv::Vec<T, N> operator()(int x0,int y0,int width,int height)
        {
            return (integralImage.at<cv::Vec<T, N>>(y0 + height, x0 + width) -
                integralImage.at<cv::Vec<T, N>>(y0, x0 + width) -
                integralImage.at<cv::Vec<T, N>>(y0 + height, x0) +
                integralImage.at<cv::Vec<T, N>>(y0, x0));
        }
    };

    怎么使用上面的方法还有类呢?
    例,输入图像为image,求取子区域Rect(x0,y0,width,height)的直方图,直方图的箱子数设为N,代码如下:

    //首先创建N个平面的二值图像
    cv::Mat planes;
    convertToBinaryPlane(image,planes,N);
    //然后计算积分图像
    IntegralImage<float, N> intHistogram(planes);
    //用积分图像计算N个箱子的直方图
    cv::Vec<float,N> ROIHist = intHistogram(x0, y0, width, height);

    最后总结一句:这个模板类设计得实在是太棒了。目前我还尚未驾驭模板类哪~

    展开全文
  • OpenCV python 绘制图片mask区域直方图 处理图片: import cv2 import numpy as np import matplotlib.pyplot as plt def main(): # 1.导入图片 img_src = cv2.imread("source.jpg") # 2.制作掩模图片 img_...
  • 创建显示各唯一区域值输入中的像元值频数分布的表和直方图
  • 如果要统计图像中某个局域的直方图 构建一幅掩模图像 将需要统计的部分设置为白色、其余部分设置为黑色 将掩模图像传递给函数即可 # -*-coding:utf8-*-# import cv2 import numpy as np from matplotlib import ...
  • RGB图像区域直方图统计方法

    千次阅读 2017-12-07 13:23:48
    # define R_BIN 8  # define G_BIN 8  # define B_BIN 8  # define R_SHIFT 5  ...彩色图像直方图统计:彩色图像一般由RGB三个通道构成,每一个通道由8位构成,最大为255,如果直接根据三
  • 反映在直方图上应该就是和具有A点相似属性的点现在的值为2了。同理可以看出对于S和V,其中一个小于设定值,那么就会归为一类,也就说,如果有10的点S和V值小于设定值,那么十个点就有可能归为一类或两类。具体得就...
  • 本文已搬家至【OpenCV学习】物体跟踪的粒子滤波算法
  • 该方法通过聚类算法将图像分割成多目标区域,据此将直方图分割成多个子图,运用多直方图均衡化对图像进行处理,从而达到在不同目标范围内的图像增强。经过实验验证,该算法能有效地抑制背景区的过增强,扩大了目标区...
  • 灰度直方图 通过灰度直方图看到图像的照明效果 灰度阈值分割 假设:图像中的目标区和背景区之间或者不同目标区之间,存在不同的灰度或平均灰度 凡是灰度值包含于z的像素都变成某一灰度值,其他的变成另一...
  • matlab直方图均一化

    2018-04-22 20:57:07
    matlab直方图均一化,区域直方图均一化,注释都已经写好了。
  • 基于加权子区域颜色直方图的多尺度镜头分割
  • 通过彩色直方图检测图像中仿射失真的重复区域
  • 这种直方图中,横坐标的左侧为纯黑、较暗的区域,而右侧为较亮、纯白的区域。因此,一张较暗图片的图像直方图中的数据多集中于左侧和中间部分;而整体明亮、只有少量阴影的图像则相反。很多数码相机提供图像直方图...
  • 图像分割:直方图区域划分及信息统计介绍 文章目录图像分割:直方图区域划分及信息统计介绍1.直方图及其区域划分2.直方图信息统计2.1 一维直方图信息统计2.2 二维直方图信息统计3.参考文献: 摘要:图像分割大部分...
  • opencv2.4.9+VS2010,使用帧间差分法或背景差分法检测出运动目标,对不同的连通区域做标记,并得出每个连通区域直方图,通过直方图比较来跟踪特定目标,也可以用在车流量统计,参数可调,算法简单,耗时小,具有...
  • 学习目标: 能够使用OpenCV或者Numpy函数计算直方图 使用OpenCV或者Matplotlib函数绘制直方图 学会cv2.calcHist(),np.histogram()函数的使用 ...直方图的左边区域图像是暗一点的像素数量、右侧则刚好相反 直方图...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,251
精华内容 900
关键字:

区域直方图