在RGB色彩空间进行亮度图像亮度调整的方法步骤:

1)计算像素在R、G、B三个分量上的平均值

2)对三个平均值分别乘以对应的亮度系数brightness,默认为1则表示亮度不变,大于1 表示亮度提高,小于1 表示亮度变暗

3)对每个像素值在R、G、B上的分量,首先减去第一步计算出来的平均值,然后再加上第二步的计算结果。

Pnew = Pold +(brightness -1 )*means

Pnew 处理之后的像素,Pold 处理之前的像素,brightness 亮度系数(取值范围为【0~3】),means图像像素的平均值

代码如下:

package chapter4;

import java.awt.image.BufferedImage;

/**

* Created by LENOVO on 18-1-29.

*/

public class BrightFilter extends AbstractBufferedImageOp {

private float brightness = 1.2f;//定义亮度系数

public BrightFilter(){

//this(1.2f);

}

public BrightFilter(float brightness){

this.brightness = brightness;

}

public float getBrightness() {

return brightness;

}

public void setBrightness(float brightness) {

this.brightness = brightness;

}

public BufferedImage filter(BufferedImage src,BufferedImage dest){

int width = src.getWidth();

int height = src.getHeight();

if(dest == null){

dest = creatCompatibleDestImage(src,null);

}

int[] inpixels = new int[width*height];

int[] outpixels = new int[width*height];

getRGB(src,0,0,width,height,inpixels);

int index = 0;

int[] rgbmeans = new int[3];

double redSum = 0;double greenSum = 0;double blueSum = 0;

double total = width*height;

for(int row=0;row

int ta = 0,tr = 0,tg = 0,tb = 0;

for(int col=0;col

index = row*width+col;

ta = (inpixels[index] >> 24) & 0xff;

tr = (inpixels[index] >> 16) & 0xff;

tg = (inpixels[index] >> 8) & 0xff;

tb = inpixels[index] & 0xff;

redSum += tr;

greenSum += tg;

blueSum += tb;

}

}

//1、计算RGB各分量平均值

rgbmeans[0] = (int)(redSum/total);

rgbmeans[1] = (int)(greenSum/total);

rgbmeans[2] = (int)(blueSum/total);

for(int row=0;row

int ta = 0,tr = 0,tg = 0,tb = 0;

for(int col=0;col

index = row*width+col;

ta = (inpixels[index] >> 24) & 0xff;

tr = (inpixels[index] >> 16) & 0xff;

tg = (inpixels[index] >> 8) & 0xff;

tb = inpixels[index] & 0xff;

//2、减去平均值

tr -= rgbmeans[0];

tg -= rgbmeans[1];

tb -= rgbmeans[2];

//3、加上平均值乘以亮度系数的值

tr += rgbmeans[0]*brightness;

tg += rgbmeans[1]*brightness;

tb += rgbmeans[2]*brightness;

outpixels[index] = (ta << 24) | (clamp(tr) << 16 ) | (clamp(tg) << 8) | clamp(tb);

}

}

setRGB(dest,0,0,width,height,outpixels);

return dest;

}

public int clamp(int value){

return value>255 ? 255:((value<0) ? 0:value);

}

}

测试代码同上

halcon中怎么降低图像亮度_图像亮度调整相关推荐

  1. halcon中怎么降低图像亮度_第6课-调整图像亮度和对比度

    (非原创,看课程自己做的笔记,防丢失放到个人空间的) 第6课-调整图像亮度和对比度理论 代码演示 1-理论 图像变换可以看做如下: -像素变换-点操作: -邻域操作-区域: 调整图像亮度和对比度属于像 ...

  2. halcon中如何生成椭圆_《zw版·Halcon-delphi系列原创教程》 Halcon分类函数005·graphics-obj,基本绘图单元,包括线段、矩形、椭圆、圆形...

    1 ** AddMetrologyObjectCircleMeasure( MetrologyHandle, Row, Column, Radius, MeasureLength1, MeasureL ...

  3. halcon中如何生成椭圆_教你动态生成椭圆,还教你怎么用海龟作图——GeoGebra制作教程...

    先看下面的动画演示,你能给出答案吗?海龟-文末有制作教程 这就涉及到椭圆是怎么来的! 什么是椭圆--将圆拉伸 / 压扁? 椭圆的定义是什么? 椭圆的定义平面内与两个定点F1,F2的距离的和等于常数(大 ...

  4. python中label函数_图像分析函数:skimage.measure中的label、regionprops

    算法解释详细,有算法执行过程动态GIF图的:https://blog.csdn.net/icvpr/article/details/10259577 算法文字解释的简介易懂的:https://www. ...

  5. Halcon中仿射变换投影变形与图像校正

    1. 二维图像的平移.旋转.缩放 平移矩阵: 旋转矩阵:逆时针为正 缩放矩阵: 2. 图像的仿射变换:不发生形变 在Halcon中,定义仿射变换矩阵,方法如下: hom_mat2d_identity( ...

  6. (一)掰开了,揉碎了,说经典halcon中的那些算子

    最重要的写在前面: 文末:我曾尝试用OpenCV中算子来还原Halcon中的算子,但是受时间和经验的限制,只能进行到如下:如果后续有必须应用OpenCV的场景,再结合起来搞. 但是最重要的经验是: 1 ...

  7. OpenCV 中的图像处理 004_平滑图像

    本文主要内容来自于 OpenCV-Python 教程 的 OpenCV 中的图像处理 部分,这部分的全部主要内容如下: 改变色彩空间 学习在不同色彩空间之间改变图像.另外学习跟踪视频中的彩色对象. 图 ...

  8. 图像几何变换时为何要用到插值算法?_图像超分辨率技术-简介

    这篇是我之前的课程报告,格式传上来乱了,有时间我会调整,我先把pdf版本放在最前面,建议直接看pdf. 一. 定义与分类 超分辨率复原技术的基本思想是釆用信号处理的方法,在改善图像质量的同时,重建成像 ...

  9. HALCON学习笔记(三)——图像运算

    图像运算:以图像为单位进行的操作(该操作对图像中的所有像素同时进行),运算的结果是得到一幅灰度分布与原图灰度分布不同的新图像.具体的运算包括算术和逻辑运算,通过改变像素的值达到图像增强的效果. 图像的 ...

最新文章

  1. netsh winsock reset
  2. Linux系统监控工具
  3. 【Python】青少年蓝桥杯_每日一题_7.11_画太阳
  4. AntV中的饼状图中的花瓣图旁边的文字显示label怎样修改
  5. 编写函数判断一个数是否是回文数_程序员面试金典 - 面试题 01.04. 回文排列
  6. 机器学习】LDA线性判别分析
  7. CentOS7下使用yum安装MariaDB
  8. 排序规则在拼音处理中的应用.sql
  9. SAP License:ERP之路
  10. 数据库原理—SQL数据定义功能(九)
  11. 【数学建模】基于matlab无线可充电传感器网络充电路线规划【含Matlab源码 750期】
  12. 网络通信数据传输原理
  13. 微信扫码免密登陆第三方应用平台
  14. pdffactory 打印字体_PDFFactory
  15. fw300r 虚拟服务器,迅捷FW300R无线宽带路由器怎么开启UPnP
  16. php给页面加背景图片,html怎么添加背景图片且让图片平铺整个页面?(代码示例)...
  17. 文本预处理库spaCy的基本使用(快速入门)
  18. localhost无法访问的问题
  19. 抢答器c语言程序设计,基于单片机的智能抢答器设计与实现
  20. 目前国内常用的无纸化会议系统——迅控无纸化

热门文章

  1. C语言中,#include的用法:#include 和 #include区别
  2. Codeforces Problemset
  3. 使用matplotlib,pylab进行python绘图
  4. HDFS fsimage和edits中的文件信息查看
  5. Hbase寻址(1)
  6. 华为天才少年稚晖君自制硬萌机器人,开源 5 天,GitHub 收获 2900 星!
  7. TFTP文件传输协议
  8. 台式电脑计算机被限制,gpedit.msc 无法运行 提示本次操作由于这台计算机的限制而被取消(超强解决方案)...
  9. 安装ROS使用sudo rosdep init 报错ERROR: cannot download default sources list from:
  10. navicat连接数据报10060错误