直方图变换-----累计
来源:互联网 发布:java 获取版本号 编辑:程序博客网 时间:2024/04/28 20:18
直方图变换累计的方法:
1.将源图像转化为灰度图,计算图像的灰度直方图
2.建立映射表,对直方图进行像素累计
3.根据映射表进行元素映射得到最终的直方图变换
代码如下:
#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/opencv.hpp"#include "opencv2/core/core.hpp"#include <stdio.h>#include <string>using namespace std;using namespace cv;int main(){cv::Mat srcImage = cv::imread("C:\\Users\\LP\\Desktop\\C++\\ConsoleApplication4\\ConsoleApplication4\\RGBFlower4.jpg");if (srcImage.empty()){return -1;} cv::imshow("原图像", srcImage);//转换为灰度图cv::Mat srcGray;cv::cvtColor(srcImage, srcGray, CV_RGB2GRAY);//计算图像直方图const int channels[1] = {0};const int histSize[1] = {256};float hranges[2] = {0, 255};const float* ranges[1] = {hranges};cv::MatND hist;cv::calcHist(&srcGray, 1, channels, cv::Mat(), hist, 1, histSize, ranges);float table[256];int nPix = srcGray.cols * srcGray.rows;//建立映射表for (int i = 0; i < 256; i++){float temp[256];//像素变换temp[i] = hist.at<float>(i) / nPix * 255;if (i != 0){//像素累计table[i] = table[i - 1] + temp[i];}else{table[i] = temp[i];}}//通过映射表查找cv::Mat lookUpTable(cv::Size(1, 256), CV_8U);for (int i = 0; i < 256; i++){lookUpTable.at<uchar>(i) = static_cast<uchar>(table[i]);}cv::Mat histTransResult;cv::LUT(srcGray, lookUpTable, histTransResult);cv::imshow("histTransResult", histTransResult);cv::waitKey(0);return 0;}
阅读全文
0 0
- 直方图变换-----累计
- 累计直方图
- 直方图变换
- 累计概率霍夫变换
- 【图像处理】直方图变换
- 图像基本变换---直方图
- 直方图变换----查找
- opencv直方图变换
- 图像处理 灰度直方图变换
- 对比度增强与直方图变换
- 直方图变换——查找
- 累计
- 累计概率霍夫变换(ProgressiveProbabilistic Hough Trans
- opencv3累计概率霍夫变换-HoughLinesP函数
- 灰度图像直方图变换的一些代码
- matlab画频率直方图,支持颜色变换
- VC下通过直方图变换对图像进行有效增强
- VC下通过直方图变换对图像进行有效增强
- Android-ADB-常用命令
- 直方图的反向投影
- Qt编译运行方式
- 直方图匹配
- RabbitMQ 官方NET教程(一)【介绍】
- 直方图变换-----累计
- win系统下nodejs安装及环境配置
- 进程学习3--getpid&getppid
- 直方图变换----查找
- 买卖股票 I II III
- Ajax如何关闭缓存
- 彩色直方图均衡
- Nginx优化实战--基本安全优化
- caffe:利用python分类,并可视化模型参数、数据