java 对比度_调整图像亮度、对比度、饱和度

完整代码如下:

1、主要方法编写类

package chapter4;

import java.awt.image.BufferedImage;

public class BSCAdjustFilter extends AbstractBufferedImageOp {

private double brightness;

private double contrast;

private double saturation;

public double getBrightness() {

return brightness;

}

public void setBrightness(double brightness) {

this.brightness = brightness;

}

public double getSaturation() {

return saturation;

}

public void setSaturation(double saturation) {

this.saturation = saturation;

}

public double getContrast() {

return contrast;

}

public void setContrast(double contrast) {

this.contrast = contrast;

}

public BufferedImage filter(BufferedImage src,BufferedImage dest){

handleParameters();//调整各系数取值范围

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;

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;

//RGB转换为HSL色彩空间

double[] hsl = rgb2Hsl(new int[]{tr,tg,tb});

//调整饱和度

hsl[1] = hsl[1]*saturation;

if(hsl[1]<0.0){

hsl[1] = 0.0;

}

if(hsl[1]>255.0){

hsl[1] = 255.0;

}

//调整亮度

hsl[2] = hsl[2]*brightness;

if(hsl[2]<0.0){

hsl[2] = 0.0;

}

if(hsl[2]>255.0){

hsl[2] = 255.0;

}

//HSL转换为rgb空间

int[] rgb = hsl2RGB(hsl);

tr = clamp(rgb[0]);

tg = clamp(rgb[1]);

tb = clamp(rgb[2]);

//调整对比度

double cr = ((tr/255.0d)-0.5d)*contrast;

double cg = ((tg/255.0d)-0.5d)*contrast;

double cb = ((tb/255.0d)-0.5d)*contrast;

//输出RGB值

tr = (int)((cr+0.5f)*255.0f);

tg = (int)((cg+0.5f)*255.0f);

tb = (int)((cb+0.5f)*255.0f);

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

}

}

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

return dest;

}

public void handleParameters(){

contrast = (1.0+contrast/100.0);

brightness = (1.0 +brightness/100.0);

saturation = (1.0+saturation/100.0);

}

public int clamp(int value){

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

}

}

2、抽象类,集成公有类方法

package chapter4;

import java.awt.image.BufferedImage;

/**

Created by LENOVO on 18-1-29.

*/

public class AbstractBufferedImageOp {

public static final double clo60 = 1.0/60.0;

public static final double clo255 = 1.0/255.0;

public int tr = 0,tg =

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像增强是一种常见的图像处理技术,可以通过调整图像饱和度对比度、锐度等参数,使图像更加清晰、生动、具有良好的视觉效果。下面是增强图像饱和度对比度、锐度的意义: 1. 增强图像饱和度 图像饱和度是指图像中颜色的纯度和鲜艳度,适当提高图像饱和度可以让图像更加鲜艳明亮、生动有趣。例如,在广告、宣传等领域,提高图像饱和度可以吸引消费者的眼球,加强观众的视觉效果。 2. 增强图像对比度 图像对比度是指图像中最亮部分和最暗部分之间的差异程度,适当提高图像对比度可以让图像更加清晰、立体、具有层次感。例如,在医学影像、安防监控等领域,提高图像对比度可以更加清晰地捕捉目标物体,使得图像更加易于分析和识别。 3. 增强图像锐度 图像锐度是指图像中的边缘和细节的清晰程度,适当提高图像的锐度可以让图像更加清晰、细腻、具有良好的细节表现能力。例如,在摄影、艺术设计等领域,提高图像的锐度可以强调图像的主题,表达更加丰富的艺术表现力。 综上所述,增强图像饱和度对比度、锐度等参数可以使图像更加清晰、生动、具有良好的视觉效果。这些技术在广告、宣传、医学影像、安防监控、摄影、艺术设计等领域都有广泛的应用。因此,图像增强技术对于提升图像质量、增强图像的表现力具有重要的意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值