Java实现图像增强之伽马变换
图像增强之伽马变换
接着上篇,我们再来说说伽马变换进行图像增强,实际上伽马变换利用的正式幂函数的特征,对输入的过暗或过亮的图像进行想要的变换。因此只有先了解幂函数,我们才能理解伽马变换的本质。照例我们先来看一下幂函数的数学表达式:
(α为有理数)的函数,即以底数为自变量,幂为因变量。现在我们再来看一下幂函数的函数图像:
由于我们输入的自变量X也就是输入图像的像素值不可能为负,故而我们只需要研究该图像中的第一像素的函数图像变换即可,经过观察我们可以得到以下几点:
1、 首先我们需要的函数在第一象限内必须是增函数,因此幂次必须要大于0;
2、 当幂次<1时,该函数在第一象限是一个凸函数;当幂次>1时,该函数在第一象限是一个凹函数;因此结合图像的灰度分布我们可知,当图像为凸函数时,会拉伸低灰度部分,压缩高灰度部分,当图像为凹函数时,会压缩低灰度部分,拉伸高灰度部分。
结合以上特征,以及最大的像素值应当被变换到255的原则,我们在此可列出图像增强的数学表达式:目的灰度值=(255/输入图像最大像素值的a次幂)*输入像素值的a次幂
代码实现如下:
//对灰度图像进行伽马变换public static BufferedImage image_Mici(BufferedImage leftImage, BufferedImage image1, float a) {int width = leftImage.getWidth();int height = leftImage.getHeight();int srcRGBs[] = leftImage.getRGB(0, 0, width, height, null, 0, width);int rgb[]=new int[3];BufferedImage destImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);int fmin=0,fmax=0;for (int j = 0; j < height; j++) {for(int i=0; i<width; i++) {ImageUtil.decodeColor(srcRGBs[j*width+i],rgb);if(j==0&&i==0){fmin=rgb[1];fmax=rgb[2];}if (rgb[1]<fmin){fmin=rgb[1];}if (rgb[1]>fmax){fmax=rgb[1];}}}for (int j=0;j<height;j++) {for (int i = 0; i < width; i++) {ImageUtil.decodeColor(srcRGBs[j * width + i], rgb);rgb[0]=(int)((255.0/Math.pow(fmax+1,a))*Math.pow(rgb[0]+1,a));rgb[1]=(int)((255.0/Math.pow(fmax+1,a))*Math.pow(1+rgb[1],a));rgb[2]=(int)((255.0/Math.pow(fmax+1,a))*Math.pow(1+rgb[2],a));destImage.setRGB(i,j, ImageUtil.encodeColor(rgb));}}return destImage;}
下面是效果实现图:
好了,至此,三种基本的图增强方法已经介绍完了,细心的同学可能会发现,我三种方法的实验对象都是黑白图片,那么彩色图片是否也可以呢,答案是当然可以,但是彩色图片很容易增强后失衡,所以必须对彩色图像进行一定的处理,通用的办法是转换一个色彩空间,下篇我们将介绍如何增强彩色图像。
总代码包下载:https://download.csdn.net/download/yiyexy/12323645
Java实现图像增强之伽马变换相关推荐
- 图像增强算法汇总(直方图均衡化、拉普拉斯、Log变换、gamma伽马变换)附MATLAB代码
一.图像增强算法介绍 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...
- 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)
一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...
- OpenCV--Python 图像增强(线性变换,直方图正规化,伽马变换,全局直方图均衡化,限制对比度的自适应直方图均衡化)
图像增强主要解决由于图像的灰度级范围较小造成的对比度较低的问题,目的就是将输出图像的灰度级放大到指定的程度,使得图像中的细节看起来增加清晰.对比度增强有几种常用的方法,如线性变换.分段线性变换.伽马变 ...
- 图像处理之混合空间增强——(Java:拉普拉斯锐化、Sobel边缘检测、均值滤波、伽马变换)
相信看过冈萨雷斯第三版数字图像处理的童鞋都知道,里面涉及到了很多的基础图像处理的算法,今天,就专门借用其中一个混合空间增强的案例,来将常见的几种图像处理算法集合起来,看能发生什么样的化学反应 首先,通 ...
- 图像增强——伽马变换
伽马变换:在图像处理中,将漂白(相机过曝)的图片或者过暗(曝光不足)的图片,进行修正! 伽马变换的基本形式如下: 曲线图如下: 通过以上曲线图: gamma值小于1时,会拉伸图像中灰度级较低的区域,同 ...
- [Python图像处理] 十六.图像的灰度非线性变换之对数变换、伽马变换
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- 【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)
[OpenCV 例程200篇]44. 图像的灰度变换(伽马变换) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 线性 ...
- opencv 伽马变换
1.算法原理 伽马变换一种灰度变换,属于简单图像增强,也称幂律变换 先介绍两个函数 1.normalize 归一化 normalize(imageGamma, imageGamma, 0, 255, ...
- 图像算法一:【图像点运算】灰度直方图、伽马变换、灰度阈值变换、分段线性变换、直方图均衡化
灰度直方图:imhist() %描述了图像灰度统计信息,主要应用于图像分割和图像灰度变换.>>Img=imread( ' xxx.jpg' ); %读图>>I=imhist(I ...
最新文章
- mac idea用自带的maven还是_苹果电脑自带截图工具怎么用?mac自带截屏工具使用技巧分享
- 结对开发四------求一维无头数组最大子数组的和
- 如何在 Java 中正确使用 wait, notify 和 notifyAll?
- java半解释半编译_编译型语言、解释型语言、半编译半解释型语言
- 2016级算法第六次上机-D.AlvinZH的学霸养成记V
- Python机器学习:梯度下降法007使用scikit中的随机梯度下降法
- 一秒带你穿越!AI 修复百年前北京影像,路边摊、剃头匠太真实了
- mysql5.6.24安装perl,linux下perl操作MySQL数据库(需要安装DBI)
- Elasticsearch(待学习)
- ubuntu部署安装 MySQL 5.7
- Oracle11g安装教程
- WhatsApp营销工具有哪些?
- 没有心的男人 2012-02-08 21:11:06
- Ant Design Pro从零到一(页面创建)
- Python 编程之Tkinter的使用01
- 强收红包漫天要价偷转黑车……滴滴网约车被指太任性
- 在微信小程序中实现时间日期的选择,并且显示当前选择的时间日期
- 年产3000吨冲压型果味硬糖生产车间工艺设计
- stm32实现毫秒ms微秒us级延时
- Sonarqube代码审查平台