Java+opencv3.2.0之直方图均衡详解

直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法。

直方图均衡化的步骤:
1、计算输入图像的直方图H
2、进行直方图归一化,使直方图组距的和为255
3、计算直方图积分
4、采用H'作为查询表:dst(x,y)=H'(src(x,y))进行图像变换

函数:Imgproc.equalizeHist(Mat src, Mat dst)
参数说明:
src:源图像
dst:运算结果图像

示例代码:

public static void main(String[] args)
  {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat source = Imgcodecs.imread("F:\\t0132354347a982c497.jpg");
    Mat dst = new Mat();
    List<Mat> mv = new ArrayList<Mat>();
    Core.split(source, mv);

    for (int i = 0; i < source.channels(); i++)
    {
      Imgproc.equalizeHist(mv.get(i), mv.get(i));
    }
    Core.merge(mv, dst);
    Imgcodecs.imwrite("F:\\dst.jpg", dst);
  }

源图像:

结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Java基于直方图应用的相似图片识别实例
  • Python OpenCV 直方图的计算与显示的方法示例
  • python OpenCV学习笔记之绘制直方图的方法
  • 详解python OpenCV学习笔记之直方图均衡化
  • python OpenCV学习笔记实现二维直方图
  • python OpenCV学习笔记直方图反向投影的实现
(0)

相关推荐

  • python OpenCV学习笔记直方图反向投影的实现

    本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dc/df6/tutorial_py_histogram_backprojection.html 它用于图像分割或寻找图像中感兴趣的对象.简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每个像素对应于属于我们对象的像素的概率.输出图像将使我们感兴趣的对象比其余部分更白. 该怎么做呢?我们创建一个图像的直方图,其中包

  • python OpenCV学习笔记之绘制直方图的方法

    本篇文章主要介绍了python OpenCV学习笔记之绘制直方图的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 官方文档 – https://docs.opencv.org/3.4.0/d1/db7/tutorial_py_histogram_begins.html 直方图会让你对图像的强度分布有一个全面的认识.它是一个在x轴上带有像素值(从0到255,但不总是),在y轴上的图像中对应的像素数量的图. 这只是理解图像的另一种方式.通过观察图像的直方图,你可以直

  • Java基于直方图应用的相似图片识别实例

    本文实例讲述了Java实现基于直方图应用的相似图片识别,是非常实用的技巧.分享给大家供大家参考.具体分析如下: 一.算法概述: 首先对源图像与要筛选的图像进行直方图数据采集,对采集的各自图像直方图进行归一化再使用巴氏系数算法对直方图数据进行计算,最终得出图像相似度值,其值范围在[0, 1]之间 0表示极其不同,1表示极其相似(相同). 二.算法步骤详解: 大致可以分为两步,根据源图像与候选图像的像素数据,生成各自直方图数据.第二步:使用第一步输出的直方图结果,运用巴氏系数(Bhattachary

  • 详解python OpenCV学习笔记之直方图均衡化

    本文介绍了python OpenCV学习笔记之直方图均衡化,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/d5/daf/tutorial_py_histogram_equalization.html 考虑一个图像,其像素值仅限制在特定的值范围内.例如,更明亮的图像将使所有像素都限制在高值中.但是一个好的图像会有来自图像的所有区域的像素.所以你需要把这个直方图拉伸到两端(如下图所给出的),这就是直方图均衡的作用(用简单的话说).这通常会改善图像的

  • python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d_histogram.html 在前一篇文章中,我们计算并绘制了一维的直方图.它被称为一维,因为我们只考虑一个特性,即像素的灰度强度值.但是在二维直方图中,你可以考虑两个特征.通常它用于寻找颜色直方图,其中两个特征是每个像素的色调和饱和度值. 有一个python样例(samples/python/c

  • Python OpenCV 直方图的计算与显示的方法示例

    本篇文章介绍如何用OpenCV Python来计算直方图,并简略介绍用NumPy和Matplotlib计算和绘制直方图 直方图的背景知识.用途什么的就直接略过去了.这里直接介绍方法. 计算并显示直方图 与C++中一样,在Python中调用的OpenCV直方图计算函数为cv2.calcHist. cv2.calcHist的原型为: cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) #返回his

  • Java+opencv3.2.0之直方图均衡详解

    直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法. 直方图均衡化的步骤: 1.计算输入图像的直方图H 2.进行直方图归一化,使直方图组距的和为255 3.计算直方图积分 4.采用H'作为查询表:dst(x,y)=H'(src(x,y))进行图像变换 函数:Imgproc.equalizeHist(Mat src, Mat dst) 参数说明: src:源图像 dst:运算结果图像 示例代码: public static void main(String[] args) { Sys

  • java操作mongoDB查询的实例详解

    java操作mongo查询的实例详解 前言: MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型.Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且

  • Java源码解析之TypeVariable详解

    TypeVariable,类型变量,描述类型,表示泛指任意或相关一类类型,也可以说狭义上的泛型(泛指某一类类型),一般用大写字母作为变量,比如K.V.E等. 源码 public interface TypeVariable<D extends GenericDeclaration> extends Type { //获得泛型的上限,若未明确声明上边界则默认为Object Type[] getBounds(); //获取声明该类型变量实体(即获得类.方法或构造器名) D getGenericDe

  • Java并发编程Semaphore计数信号量详解

    Semaphore 是一个计数信号量,它的本质是一个共享锁.信号量维护了一个信号量许可集.线程可以通过调用acquire()来获取信号量的许可:当信号量中有可用的许可时,线程能获取该许可:否则线程必须等待,直到有可用的许可为止. 线程可以通过release()来释放它所持有的信号量许可(用完信号量之后必须释放,不然其他线程可能会无法获取信号量). 简单示例: package me.socketthread; import java.util.concurrent.ExecutorService;

  • Java 中This用法的实例详解

     Java 中This用法的实例详解 用类名定义一个变量的时候,定义的只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法. 那们类里面是够也应该有一个引用来访问自己的属性和方法纳? 呵呵,Java提供了一个很好的东西,就是 this 对象,它可以在类里面来引用这个类的属性和方法.先来个简单的例子: public class ThisDemo { String name="Mick"; public void print(String name){ System.out.pr

  • Shell执行/调用Java/Jar程序例子的实例详解

    Shell执行/调用Java/Jar程序例子的实例详解 前言: 最近要写一个独立的Java程序去监控Hadoop和Oozie,通过Shell去调用.写代码到现在也4年多了,貌似就从来没在生产环境中写过一个独立的Java程序,不是部署到Tomcat就是直接丢给Hadoop.于是参考Hadoop等开源环境,自己写了一个demo,并且可以通过Ant打包生成可运行的程序.所以这里有三步:Java程序,Shell,Ant      1.首先建立Java程序,由于是例子,所以这里很简单,只是输出传入参数的个

  • Java中正则表达式的使用和详解(下)

    在上篇给大家介绍了Java中正则表达式的使用和详解(上),具体内容如下所示: 1.常用正则表达式 规则 正则表达式语法   一个或多个汉字 ^[\u0391-\uFFE5]+$  邮政编码 ^[1-9]\d{5}$ QQ号码 ^[1-9]\d{4,10}$  邮箱 ^[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}$  用户名(字母开头 + 数字/字母/下划线) ^[A-Za-z][A-Za-z1-9_-]+$ 手

  • Java基本数据类型与封装类型详解(int和Integer区别)

    int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer.在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字

  • java 中enum的使用方法详解

    java 中enum的使用方法详解 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 下面是我在使用 enum 过程中的一些经验和总结. 原始的接口定义常量 public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu

  • java 中自定义OutputFormat的实例详解

    java 中 自定义OutputFormat的实例详解 实例代码: package com.ccse.hadoop.outputformat; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apa

随机推荐