OpenCV图像处理教程C++(十八) 直方图均衡化、计算、比较、反向投影

本文介绍了OpenCV中的图像直方图均衡化技术,用于提升图像对比度。直方图计算涉及到图像的灰度、梯度等属性,并可以通过多种方法进行比较,如相关性、卡方、十字交叉性和巴氏距离。此外,还讲述了直方图反向投影在寻找图像相似对象中的应用。
摘要由CSDN通过智能技术生成

直方图均衡化:
直方图(Histogram): 是指对整个图像像在灰度范围内的像素值(0~255)统计出现频率次数,据此生成的直方图,称为图像直方图-直方图。
直方图反映了图像灰度的分布情况。是图像的统计学特征。
直方图均衡化: 是一种提高图像对比度的方法,拉伸图像灰度值范围。让图像更均衡。对于图像的特征提取是非常有用的
通过remap我们知道可以将图像灰度分布从一个分布映射到另外一个分布,然后在得到映射后的像素值即可。
提升对比度:就是图像中所有的像素值之间的差异都比较明显
API:

equalizeHist(
src,8单通道
dst)
*/

代码:

#include <opencv2/opencv.hpp>
#include<iostream>
#include<math.h>
#include <string> 
#include<fstream> 
using namespace cv;
using namespace std;

int main() {
    Mat src, graysrc,dst;
    src = imread("C:\\Users\\Administrator\\Desktop\\pic\\z2.jpg");
    imshow("input", src);
    cvtColor(src, graysrc,CV_RGB2GRAY);
    imshow("graysrc", graysrc);
    equalizeHist(graysrc, dst);
    imshow("dst", dst);
    waitKey(0);
}

结果:
这里写图片描述

直方图计算:
我们队图像灰度,梯度,每个像素的角度,等一切图像的属性值都可以建立直方图,基于图像像素灰度直方图最常见。
直方图的几个常见属性:
dims表示维度。对灰度图像来说只有一个通道值dims=1
bins表示维度中子区域大小划分,bins=256,划分为256个等级
range表示值的范围,灰度值范围0-255
API:

calcHist(
const Mat*src,//输入图像的指针
int images,//图像数目, 这些图像要有相同大大小,相同的深度(CV_8U CV_16U CV_32F)
const int*channels,//通道数
mask,//可选的掩码 可选的掩码,不使用时可设为空。要和输入图像具有相同的大小,在进行直方图计算的时候,只会统计该掩码不为0的对应像素
hist,//输出直方图数据
int dims,//维数
const int*histsize,//直方图级数
const float*ranges,//值域范围
bool uniform,//默认true  是否进行归一化
bool accumulate)//默认false  累积标志

代码:

#include <opencv2/opencv.hpp>
#include<iostream>
#include<math.h>
#include <string> 
#include<fstream> 
using namespace cv;
using namespace std;

int main() {
    Mat src,b_hist,g_hist,r_hist;
    src = imread("C:\\Users\\Administrator\\Desktop\\pic\\1-H.jpg");
    imshow("input", src);
    //分通道显示
    
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值