图像处理之光束效果

简介:                                                              图像处理之光束效果 原理: 光束滤镜,对一幅图像完成光束效果,好似有一束光从图像本身激发出来,按照一定的角度 散发开来,光束滤镜是一种图像叠加效果,首先要借助于之前的完成的移动模糊滤镜,将一 幅图像按照一定的阈值二值化以后,加以移动模糊滤镜,将移动模糊之后的图像和原图像叠 加就产生了光束滤镜效果。

                                                             图像处理之光束效果

原理:

光束滤镜,对一幅图像完成光束效果,好似有一束光从图像本身激发出来,按照一定的角度

散发开来,光束滤镜是一种图像叠加效果,首先要借助于之前的完成的移动模糊滤镜,将一

幅图像按照一定的阈值二值化以后,加以移动模糊滤镜,将移动模糊之后的图像和原图像叠

加就产生了光束滤镜效果。

 

对光束滤镜而言,其最终效果除了移动模糊的三个参数以外,还取决于以下两个参数:

a.      图像RGB阈值的选取,建议可以直方图以后选取,程序以threshold表示

b.      光强度大小的值的选取,程序中以strength表示

 

程序运行效果如下:


关键代码解析:

计算RGB阈值代码如下– 输入的阈值范围为[0,1]

intthreshold3 = (int)(threshold*3*255);

 

求取二值像素的代码如下:

int l = r + g + b;

if (l < threshold3)

    [x] =0xff000000;

else {

l /= 3;

pixels[x] = a | (l << 16) | (l << 8) | l;

}

像素叠加乘以强度系数的代码如下(其中r,g,b分别代表RGB的三个颜色分量值):

r = PixelUtils.clamp((int)(r * strength) + r2);

g = PixelUtils.clamp((int)(g * strength) + g2);

b = PixelUtils.clamp((int)(b * strength) + b2);

光束滤镜的完全源代码如下:

/*
** Copyright 2012 @gloomyfish. All rights reserved.
*/

package com.process.blur.study;

import java.awt.image.BufferedImage;

public class LaserFilter extends MotionFilter {

    private float threshold = 0.5f;
    private float strength = 0.8f;

    public LaserFilter() {
	}

	public void setThreshold( float threshold ) {
		this.threshold = threshold;
	}
	
	public float getThreshold() {
		return threshold;
	}
	
	public void setStrength( float strength ) {
		this.strength = strength;
	}
	
	public float getStrength() {
		return strength;
	}
	
    public BufferedImage filter( BufferedImage src, BufferedImage dst ) {
        int width = src.getWidth();
        int height = src.getHeight();
		int[] pixels = new int[width];
		int[] srcPixels = new int[width];

        BufferedImage laserImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

		int threshold3 = (int)(threshold*3*255);
		for ( int y = 0; y < height; y++ ) {
			getRGB( src, 0, y, width, 1, pixels );
			for ( int x = 0; x < width; x++ ) {
				int rgb = pixels[x];
				int a = rgb & 0xff000000;
				int r = (rgb >> 16) & 0xff;
				int g = (rgb >> 8) & 0xff;
				int b = rgb & 0xff;
				int l = r + g + b;
				if (l < threshold3)
					pixels[x] = 0xff000000;
				else {
					l /= 3;
					pixels[x] = a | (l << 16) | (l << 8) | l;
				}
			}
			setRGB( laserImg, 0, y, width, 1, pixels );
		}

		laserImg = super.filter(laserImg, null );
		
		for ( int y = 0; y < height; y++ ) {
			getRGB( laserImg, 0, y, width, 1, pixels );
			getRGB( src, 0, y, width, 1, srcPixels );
			for ( int x = 0; x < width; x++ ) {
				int rgb = pixels[x];
				int a = rgb & 0xff000000;
				int r = (rgb >> 16) & 0xff;
				int g = (rgb >> 8) & 0xff;
				int b = rgb & 0xff;
				
				int rgb2 = srcPixels[x];
				// int a2 = rgb2 & 0xff000000;
				int r2 = (rgb2 >> 16) & 0xff;
				int g2 = (rgb2 >> 8) & 0xff;
				int b2 = rgb2 & 0xff;
				
				if ( r > 0 ) {
					r = clamp((int)(r * strength) + r2);
					g = clamp((int)(g * strength) + g2);
					b = clamp((int)(b * strength) + b2);
				} else {
					r = r2;
					g = g2;
					b = b2;
				}

				rgb = a | (r << 16) | (g << 8) | b;
				pixels[x] = rgb;
			}
			setRGB( laserImg, 0, y, width, 1, pixels );
		}

        return laserImg;
    }
    
	public String toString() {
		return "Light/Laser...";
	}
}
移动模糊 - 参见博客文章 《图像处理之移动模糊》


目录
相关文章
|
8月前
|
人工智能 Anolis
活动推荐:2025 RISC-V 生态大会将在北京召开,龙蜥受邀参展
一同探讨行业趋势及合作契机,齐心共筑 RISC-V 的“芯”未来。
|
9月前
|
人工智能 运维 自动驾驶
回顾与展望,SOMA年终工作会议暨Meet Up圆满举办!
委员们齐聚复旦复盘联盟工作,展望规划联盟发展。
|
9月前
|
人工智能 Linux 文件存储
旧台式电脑的 10 种用途
旧台式电脑的 10 种用途
415 14
|
10月前
|
存储 人工智能 自然语言处理
Delta-CoMe:清华联合OpenBMB等高校开源的新型增量压缩算法
Delta-CoMe是由清华大学NLP实验室联合OpenBMB开源社区、北京大学和上海财经大学提出的新型增量压缩算法。该算法通过结合低秩分解和低比特量化技术,显著减少了大型语言模型的存储和内存需求,同时保持了模型性能几乎无损。Delta-CoMe特别适用于处理数学、代码和多模态等复杂任务,并在推理速度上有所提升。
261 6
Delta-CoMe:清华联合OpenBMB等高校开源的新型增量压缩算法
|
12月前
|
存储 安全 网络安全
云端盾牌:云计算时代的网络安全守护在数字化浪潮中,云计算以其高效、灵活的特性成为企业转型的加速器。然而,伴随其迅猛发展,网络安全问题亦如影随形,成为悬在每个组织头顶的达摩克利斯之剑。本文旨在探讨云计算服务中的网络安全挑战,分析信息安全的重要性,并提出相应对策,以期为企业构建一道坚实的云端防护网。
在当今这个数据驱动的时代,云计算已成为推动创新与效率的关键力量。它允许用户随时随地访问强大的计算资源,降低了企业的运营成本,加速了产品上市时间。但随之而来的网络威胁也日益猖獗,尤其是对于依赖云服务的企业而言,数据泄露、身份盗用等安全事件频发,不仅造成经济损失,更严重损害品牌信誉。本文深入剖析云计算环境中的安全风险,强调建立健全的信息安全管理机制的重要性,并分享一系列有效策略,旨在帮助企业和个人用户在享受云服务带来的便利的同时,也能构筑起强有力的网络防线。
|
12月前
|
人工智能 自动驾驶 机器人
【通义】AI视界|苹果自动驾驶汽车项目画上句号:加州测试许可被取消
本文精选了24小时内的重要科技新闻,包括Waymo前CEO批评马斯克对自动驾驶的态度、AMD发布新款AI芯片但股价波动、苹果造车项目终止、Familia.AI推出家庭应用以及AI逆向绘画技术的进展。更多内容请访问通义官网体验。
|
安全 定位技术 Android开发
探索Android 12的隐私保护特性
随着数字化生活的深入,个人隐私保护成为用户关注的焦点。本文将介绍Android 12新推出的隐私保护功能,包括隐私仪表板、近似位置访问和麦克风/相机指示器等,帮助读者了解如何通过这些工具来增强自己的数据安全。
|
机器学习/深度学习 人工智能 C语言
10个C语言实现源代码
10个重要的算法C语言实现源代码
|
人工智能 开发者
Kimi Chat:国内AI新星,20万字超长文本处理的突破者
【2月更文挑战第12天】Kimi Chat:国内AI新星,20万字超长文本处理的突破者
3147 2
Kimi Chat:国内AI新星,20万字超长文本处理的突破者
|
自然语言处理 搜索推荐 算法
Python小说阅读器制作教程
Python小说阅读器制作教程
402 0