halcon中怎么降低图像亮度_图像亮度调整
在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中怎么降低图像亮度_图像亮度调整相关推荐
- halcon中怎么降低图像亮度_第6课-调整图像亮度和对比度
(非原创,看课程自己做的笔记,防丢失放到个人空间的) 第6课-调整图像亮度和对比度理论 代码演示 1-理论 图像变换可以看做如下: -像素变换-点操作: -邻域操作-区域: 调整图像亮度和对比度属于像 ...
- halcon中如何生成椭圆_《zw版·Halcon-delphi系列原创教程》 Halcon分类函数005·graphics-obj,基本绘图单元,包括线段、矩形、椭圆、圆形...
1 ** AddMetrologyObjectCircleMeasure( MetrologyHandle, Row, Column, Radius, MeasureLength1, MeasureL ...
- halcon中如何生成椭圆_教你动态生成椭圆,还教你怎么用海龟作图——GeoGebra制作教程...
先看下面的动画演示,你能给出答案吗?海龟-文末有制作教程 这就涉及到椭圆是怎么来的! 什么是椭圆--将圆拉伸 / 压扁? 椭圆的定义是什么? 椭圆的定义平面内与两个定点F1,F2的距离的和等于常数(大 ...
- python中label函数_图像分析函数:skimage.measure中的label、regionprops
算法解释详细,有算法执行过程动态GIF图的:https://blog.csdn.net/icvpr/article/details/10259577 算法文字解释的简介易懂的:https://www. ...
- Halcon中仿射变换投影变形与图像校正
1. 二维图像的平移.旋转.缩放 平移矩阵: 旋转矩阵:逆时针为正 缩放矩阵: 2. 图像的仿射变换:不发生形变 在Halcon中,定义仿射变换矩阵,方法如下: hom_mat2d_identity( ...
- (一)掰开了,揉碎了,说经典halcon中的那些算子
最重要的写在前面: 文末:我曾尝试用OpenCV中算子来还原Halcon中的算子,但是受时间和经验的限制,只能进行到如下:如果后续有必须应用OpenCV的场景,再结合起来搞. 但是最重要的经验是: 1 ...
- OpenCV 中的图像处理 004_平滑图像
本文主要内容来自于 OpenCV-Python 教程 的 OpenCV 中的图像处理 部分,这部分的全部主要内容如下: 改变色彩空间 学习在不同色彩空间之间改变图像.另外学习跟踪视频中的彩色对象. 图 ...
- 图像几何变换时为何要用到插值算法?_图像超分辨率技术-简介
这篇是我之前的课程报告,格式传上来乱了,有时间我会调整,我先把pdf版本放在最前面,建议直接看pdf. 一. 定义与分类 超分辨率复原技术的基本思想是釆用信号处理的方法,在改善图像质量的同时,重建成像 ...
- HALCON学习笔记(三)——图像运算
图像运算:以图像为单位进行的操作(该操作对图像中的所有像素同时进行),运算的结果是得到一幅灰度分布与原图灰度分布不同的新图像.具体的运算包括算术和逻辑运算,通过改变像素的值达到图像增强的效果. 图像的 ...
最新文章
- netsh winsock reset
- Linux系统监控工具
- 【Python】青少年蓝桥杯_每日一题_7.11_画太阳
- AntV中的饼状图中的花瓣图旁边的文字显示label怎样修改
- 编写函数判断一个数是否是回文数_程序员面试金典 - 面试题 01.04. 回文排列
- 机器学习】LDA线性判别分析
- CentOS7下使用yum安装MariaDB
- 排序规则在拼音处理中的应用.sql
- SAP License:ERP之路
- 数据库原理—SQL数据定义功能(九)
- 【数学建模】基于matlab无线可充电传感器网络充电路线规划【含Matlab源码 750期】
- 网络通信数据传输原理
- 微信扫码免密登陆第三方应用平台
- pdffactory 打印字体_PDFFactory
- fw300r 虚拟服务器,迅捷FW300R无线宽带路由器怎么开启UPnP
- php给页面加背景图片,html怎么添加背景图片且让图片平铺整个页面?(代码示例)...
- 文本预处理库spaCy的基本使用(快速入门)
- localhost无法访问的问题
- 抢答器c语言程序设计,基于单片机的智能抢答器设计与实现
- 目前国内常用的无纸化会议系统——迅控无纸化
热门文章
- C语言中,#include的用法:#include 和 #include区别
- Codeforces Problemset
- 使用matplotlib,pylab进行python绘图
- HDFS fsimage和edits中的文件信息查看
- Hbase寻址(1)
- 华为天才少年稚晖君自制硬萌机器人,开源 5 天,GitHub 收获 2900 星!
- TFTP文件传输协议
- 台式电脑计算机被限制,gpedit.msc 无法运行 提示本次操作由于这台计算机的限制而被取消(超强解决方案)...
- 安装ROS使用sudo rosdep init 报错ERROR: cannot download default sources list from:
- navicat连接数据报10060错误