昨天看到一个模糊算法介绍,感觉挺有趣的正好用到就实验了一下

很多概念都是模糊的,如果把像素的概念模糊化,有时候可以这种模糊解决很多实际问题,比如增强图片对比度

让黑的更黑亮的更亮灰的微处理

但是这个局限性有点大,适合处理对比度不大的图片

#include<opencv2\opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
Mat img;
float* findValue(float intensity) {float* value = new float[3];if (intensity <= 0.27) {value[0] = 1.0;           //黑}if (intensity >= 0.5) {value[0] = 0.0;}else {value[0] = (0.5 - intensity) / (0.22);}if (intensity >= 0.72) {value[1] = 1.0;           //白}if (intensity <= 0.5) {value[1] = 0;}else {value[1] = (intensity - 0.5) / 0.22;}if (intensity >= 0.72) {value[2] = 0.0;               //灰}if (intensity <= 0.27) {value[2] = 0.0;}if (intensity <= 0.5) {value[2] = (intensity - 0.27) / 0.22;}else {value[2] = (0.72 - intensity) / 0.22;}return value;
}void dealValue() {float* value = new float[3];for (int i = 0; i < img.rows; i++) {float* pr = img.ptr<float>(i);for (int j = 0; j < img.cols; j++) {for (int k = 0; k < 3; k++) {value = findValue(pr[j * 3 + k]);   pr[j * 3 + k] = ((value[0] * 0) + (value[2] * 0.5) + (value[1] * 1)) / (value[0] + value[1] + value[2]);}}}delete[]value;
}void histogramcalculation(const Mat & img, Mat & histoImage)
{int histSize = 255;float range[] = { 0,256 };   const float* histRange = { range };bool uniform = true;bool accumulate = false;Mat b_hist, g_hist, r_hist;vector<Mat> bgr_channels;split(img, bgr_channels);     calcHist(&bgr_channels[0], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate);  calcHist(&bgr_channels[1], 1, 0, Mat(), g_hist, 1, &histSize, &histRange, uniform, accumulate);calcHist(&bgr_channels[2], 1, 0, Mat(), r_hist, 1, &histSize, &histRange, uniform, accumulate);int hist_w = 600, hist_h = 400;  int bin_w = cvRound((double)hist_w / histSize);        Mat histImage(hist_h, hist_w, CV_8UC3, Scalar(120, 55, 133));       normalize(b_hist, b_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());    normalize(g_hist, g_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());for (int i = 1; i < histSize; i++) {   line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(b_hist.at<float>(i - 1))), Point(bin_w*i, hist_h - cvRound(b_hist.at<float>(i))), Scalar(255, 0, 0), 2);line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(g_hist.at<float>(i - 1))), Point(bin_w*i, hist_h - cvRound(g_hist.at<float>(i))), Scalar(0, 255, 0), 2);line(histImage, Point(bin_w*(i - 1), hist_h - cvRound(r_hist.at<float>(i - 1))), Point(bin_w*i, hist_h - cvRound(r_hist.at<float>(i))), Scalar(0, 0, 255), 2);}histoImage = histImage;
}int main() {img = imread("D://图片//999.jpg");if (img.empty()) {return -1;}Mat result1(img.size(), img.type());Mat result2(img.size(), img.type());imshow("org", img);histogramcalculation(img, result1);imshow("result1", result1);img.convertTo(img, CV_32F, 1 / 255.0);//  int num = 30;
//  while (num--) {dealValue();//}img.convertTo(img, CV_32F, 255.0);histogramcalculation(img, result2);imshow("result2", result2);img.convertTo(img, CV_8U);imshow("result", img);waitKey(0);return 0;
}

对比强的图片效果:

可以看出虽然图片均衡了,但是质量变差了

对比度不好的:

因为我处理范例图片时不是对比度,所以效果不是那么明显

模糊算法增强图片对比度相关推荐

  1. AI PNG Enlarger (AI图片放大工具) - 用深度学习AI算法放大图片,不模糊并保持透明度

    大家通常放大一个图片,无论是将尺寸放大还是在浏览过程中用放大镜工具时,都会发现放大了的图片会变模糊甚至出现马赛克状.有没有办法将图片放大还保持清晰度呢? AI PNG Enlarger是一款免费的Wi ...

  2. php 图片模糊处理,PHP实例:php使用高斯算法实现图片的模糊处理功能示例

    <PHP实例:php使用高斯算法实现图片的模糊处理功能示例>要点: 本文介绍了PHP实例:php使用高斯算法实现图片的模糊处理功能示例,希望对您有用.如果有疑问,可以联系我们. 本文实例讲 ...

  3. java实现图像对比度增强_java图片对比度调整示例代码

    java图片对比度调整示例代码 发布于 2020-12-31| 复制链接 摘记: 前言本文主要给大家介绍了关于java图片对比度调整的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍 ...

  4. Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的直方图算法增强(C++)

    Baumer工业相机堡盟工业相机如何联合BGAPISDK和OpenCV实现图像的直方图算法增强(C++) Baumer工业相机 Baumer工业相机使用图像算法增加图像的技术背景 Baumer工业相机 ...

  5. 数据增强-亮度-对比度-色彩饱和度-色调-锐度 不改变图像大小

    https://www.cnblogs.com/yanghailin/p/11106480.html # coding=utf-8 import os import os import cv2 imp ...

  6. 图像调整亮度饱和度 c语言,数据增强-亮度-对比度-色彩饱和度-色调-锐度 不改变图像大小...

    # coding=utf-8 import os import os import cv2 import math import numpy as np from PIL import Image f ...

  7. NIMA 算法测试图片清晰度

    NIMA 算法测试图片清晰度 简介 该算法从两个不同的维度进行判断.首先是判断照片的质量等. 美观等主观方面,该算法也可以用来判断拍照水平.摄影爱好者可以用来提高自己的摄影水平. 如何检测图片 NIM ...

  8. LBP算法提取图片纹理特征图

    LBP算法提取图片纹理特征图 一.项目目标 采用LBP算法提取图片的纹理特征图. 二.LBP算法原理 LBP指局部二值模式,英文全称:Local Binary Patterns.最初功能为辅助图像局部 ...

  9. java图像增强_java图片对比度调整示例代码

    前言 本文主要给大家介绍了关于java图片对比度调整的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下 测试代码 public static void main(Stri ...

最新文章

  1. Xcode_7_GM_seed.dmg下载
  2. 信息检索导论的课件——http://home.ustc.edu.cn/~zhufengx/ir/pdf/
  3. 使用Xcode和Instruments调试解决iOS内存泄露
  4. python中name没有定义_python中__name__的使用
  5. 面向对象命名空间、组合
  6. 关于c#:Filter Serilog日志取决于上下文源到不同的接收器?
  7. cocos2dx 3.0 windows平台 中文乱码解决
  8. C语言课后习题(59)
  9. 我是如何查找RFC官方资料的
  10. STL之multiset简介
  11. Spring DI如何给对象赋空值 以及 对 “” null 空值的总结
  12. 自动化测试项目实战训练【广州8月】
  13. 《当我谈跑步时我谈些什么》:痛苦难以避免,而磨难可以选择
  14. xilinx FPGA IOB约束使用以及注意事项
  15. 实验二、电阻变化时二极管的直流电压和交流电流的变化
  16. Python最佳学习路线图
  17. vue watch监听数据解决新旧值一样的问题(newValue, oldValue)
  18. 脉冲神经网络原理及应用,脉冲神经网络结构特点
  19. 计算机与护理信息学,迎接信息时代的挑战——护理信息学的兴起与发展
  20. 。ThinkPad T60评测 彻底替代T43

热门文章

  1. 【LeetCode】463. 岛屿的周长
  2. oracle 创建 permanent tablespace
  3. 如何查看计算机网络密码是什么意思,电脑网络共享密码要怎么查找
  4. Activity启动模式singleInstance
  5. QSL Server SQL语句实例
  6. 大型企业网络安全解决方案
  7. 重庆网络公司的几种死法
  8. C语言 计算签到所得积分
  9. java.sql.Date和java.sql.Timestamp转换
  10. 边缘计算网关是什么?有什么功能和特点?