• 线直方图-旋转矩形区域直方图的快速方法
• 基于区域直方图统计的灰度图像色彩传递方法，赵源萌，王岭雪，应用直方图统计法描述图像的区域纹理，研究提出基于区域直方图纹理描述的灰度图像色彩传递处理方法。方法首先为待彩色化处理的灰
• # -*- 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 cvimport numpy as npfrom matplotlib import pyplot as pltimg = 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] = 255masked_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 cvimport numpy as npfrom matplotlib import pyplot as pltimg = 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] = 255masked_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

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])

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

plt.figure()
plt.subplot(221)
plt.imshow(img_gray,'gray')
plt.subplot(222)
plt.subplot(223)
plt.subplot(224)
plt.plot(hist_full)
plt.xlim([0,256])

plt.show()
展开全文
• 下面介绍一种快速计算图像任意子区域直方图的方法，方法实现的过程描述如下：假设最终得到的直方图箱子数（通俗点就是直方图的横坐标的单位数）为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;
//计算每个二值平面
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 ...
• # 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直方图均一化，区域直方图均一化，注释都已经写好了。
• 基于加权子区域颜色直方图的多尺度镜头分割
• 通过彩色直方图检测图像中仿射失真的重复区域
• 这种直方图中，横坐标的左侧为纯黑、较暗的区域，而右侧为较亮、纯白的区域。因此，一张较暗图片的图像直方图中的数据多集中于左侧和中间部分；而整体明亮、只有少量阴影的图像则相反。很多数码相机提供图像直方图...
• 图像分割：直方图区域划分及信息统计介绍 文章目录图像分割：直方图区域划分及信息统计介绍1.直方图及其区域划分2.直方图信息统计2.1 一维直方图信息统计2.2 二维直方图信息统计3.参考文献： 摘要：图像分割大部分...
• opencv2.4.9+VS2010，使用帧间差分法或背景差分法检测出运动目标，对不同的连通区域做标记，并得出每个连通区域直方图，通过直方图比较来跟踪特定目标，也可以用在车流量统计，参数可调，算法简单，耗时小，具有...
• 学习目标： 能够使用OpenCV或者Numpy函数计算直方图 使用OpenCV或者Matplotlib函数绘制直方图 学会cv2.calcHist(),np.histogram()函数的使用 ...直方图的左边区域图像是暗一点的像素数量、右侧则刚好相反 直方图...

...