图像处理之半调色融合

简介: 图像处理之半调色融合 图像处理中错误扩散,抖动算法在在数字半调技术中有着重要的应用,是报纸,黑白 打印机等输出设备常常采用的技术。常见的图像半调技术有矩阵错误扩散,弗洛伊德- 斯坦德伯格错误扩散,空间填充曲线采样错误扩散等。

图像处理之半调色融合

图像处理中错误扩散,抖动算法在在数字半调技术中有着重要的应用,是报纸,黑白

打印机等输出设备常常采用的技术。常见的图像半调技术有矩阵错误扩散,弗洛伊德-

斯坦德伯格错误扩散,空间填充曲线采样错误扩散等。本文借助半调算法,实现两张

图像的融合,将背景纹理融合到目标图像中,创造惊艳的图像处理效果。

算法基本思想:

读取纹理图像像素点P(x,y)与目标图像对应像素D(x,y),输入参数调节S取值范围[0~1]

根据参数S计算颜色差值cs = S * 255,假设像素值分别为P(x, y) =mv, D(x, y) = dv

则融合后的像素值pd(x, y)=255*(1-3x^2 - 2x^3)其中x = (mv - (dv - cs)/2cs)

运行效果:



背景图像分别为:



程序源代码:

package com.gloomyfish.filter.study;

import java.awt.image.BufferedImage;

/**
 * A filter which uses a another image as a ask to produce a halftoning effect.
 */
public class HalftoneFilter extends AbstractBufferedImageOp {
	
	private float softness = 0.1f;
	private boolean invert;
	private BufferedImage mask;

	public HalftoneFilter() {
		System.out.println("Stylize/Halftone...");
	}

	/**
	 * Set the softness of the effect in the range 0..1.
	 * @param softness the softness
     * @min-value 0
     * @max-value 1
	 */
	public void setSoftness( float softness ) {
		this.softness = softness;
	}
	
	/**
	 * Get the softness of the effect.
	 * @return the softness
     * @see #setSoftness
	 */
	public float getSoftness() {
		return softness;
	}
	
	/**
	 * Set the halftone background image.
	 * @param BufferedImage maskImage
     * @see #getMask
	 */
	public void setMask( BufferedImage maskImage ) {
		this.mask = maskImage;
	}
	
	public void setInvert( boolean invert ) {
		this.invert = invert;
	}

    public BufferedImage filter( BufferedImage src, BufferedImage dst ) {
        int width = src.getWidth();
        int height = src.getHeight();

        if ( dst == null )
            dst = createCompatibleDestImage( src, null );
		if ( mask == null )
			return dst;

        int maskWidth = mask.getWidth();
        int maskHeight = mask.getHeight();

        // scale to [0~255]
        float s = 255*softness; 

		int[] inPixels = new int[width];
		int[] maskPixels = new int[maskWidth];

        for ( int y = 0; y < height; y++ ) {
			getRGB( src, 0, y, width, 1, inPixels ); // get row pixels
			getRGB( mask, 0, y % maskHeight, maskWidth, 1, maskPixels ); // get row pixels

			for ( int x = 0; x < width; x++ ) {
				int maskRGB = maskPixels[x % maskWidth];
				int inRGB = inPixels[x];
				if ( invert )
                    maskRGB ^= 0xffffff;

				// start to halftone here!!
                int ir = (inRGB >> 16) & 0xff;
                int ig = (inRGB >> 8) & 0xff;
                int ib = inRGB & 0xff;
                int mr = (maskRGB >> 16) & 0xff;
                int mg = (maskRGB >> 8) & 0xff;
                int mb = maskRGB & 0xff;
                int r = (int)(255 * (1-cubeInterpolation( ir-s, ir+s, mr )));
                int g = (int)(255 * (1-cubeInterpolation( ig-s, ig+s, mg )));
                int b = (int)(255 * (1-cubeInterpolation( ib-s, ib+s, mb )));
                inPixels[x] = (inRGB & 0xff000000) | (r << 16) | (g << 8) | b;
                
            }

			setRGB( dst, 0, y, width, 1, inPixels );
        }

        return dst;
    }
    
	public static float cubeInterpolation(float a, float b, float x) {
		if (x < a)
			return 0;
		if (x >= b)
			return 1;
		x = (x - a) / (b - a);
		return x*x * (3 - 2*x);
	}
}

目录
相关文章
|
6月前
|
传感器 vr&ar UED
三维视觉技术
三维视觉技术
|
7月前
|
机器学习/深度学习 算法 固态存储
【图像配准】基于SSD、SAD、NCC算法实现三维图像立体配准和融合附matlab代码
【图像配准】基于SSD、SAD、NCC算法实现三维图像立体配准和融合附matlab代码
|
2月前
|
存储 PyTorch 算法框架/工具
一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)
一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)
39 1
|
3月前
|
算法 自动驾驶 人机交互
三维视觉技术的发展
三维视觉技术的发展
60 2
|
7月前
|
机器学习/深度学习 传感器 算法
【红外图像】利用红外图像处理技术对不同制冷剂充装的制冷系统进行性能评估(Matlab代码实现)
【红外图像】利用红外图像处理技术对不同制冷剂充装的制冷系统进行性能评估(Matlab代码实现)
|
9月前
|
监控 算法 vr&ar
鱼眼矫正,实时视频与3D的融合案例分享
#鱼眼摄像头画面矫正及与3D融合 鱼眼摄像头是一种广角镜头,捕捉的视频画面呈现出弯曲或球形。通过鱼眼矫正算法,可以将鱼眼相机拍摄的视频转换为更接近于标准透视的视频,使用户能够直接获得更自然的视频效果。 经过鱼眼矫正后的实时视频,适用于与3D场景实时融合,即视频孪生 = 视频+数字孪生。 视频孪生是现阶段数字孪生的天花板。将分散、割裂的实时视频在数字孪生世界中做三维还原,虚实共生,虚实互补,为用户提供立体、直观、实时真实的动态的系统。只有通过动态的视频,才能实现真正的虚实共生。
221 0
|
11月前
|
机器学习/深度学习 监控 算法
传统图像处理之相机模型
传统图像处理之相机模型
185 0
|
11月前
|
机器学习/深度学习 算法 数据挖掘
传统图像处理之颜色特征
传统图像处理之颜色特征
169 0
传统图像处理之颜色特征
|
算法 数据处理 计算机视觉
砥砺的前行|基于labview的机器视觉图像处理(七)——图像双边处理自适应亮度
砥砺的前行|基于labview的机器视觉图像处理(七)——图像双边处理自适应亮度
114 0
砥砺的前行|基于labview的机器视觉图像处理(七)——图像双边处理自适应亮度
|
机器学习/深度学习 传感器 存储
最新综述!分析用于实时车载激光雷达感知的点云深度学习表示(空间结构/光栅化/坐标系)
随着帧速率、点云大小和传感器分辨率的增加,这些点云的实时处理仍必须从车辆环境的这张日益精确的图片中提取语义。在这些点云上运行的深度神经网络性能和准确性的一个决定因素是底层数据表示及其计算方式。本文调查了神经网络中使用的计算表示与其性能特征之间的关系,提出了现代深度神经网络中用于3D点云处理的LiDAR点云表示的新计算分类法。使用这种分类法,对不同的方法家族进行结构化分析,论文揭示了在计算效率、内存需求和表示能力方面的共同优势和局限性,这些都是通过语义分割性能来衡量的。最后,论文为基于神经网络的点云处理方法的未来发展提供了一些见解和指导。
最新综述!分析用于实时车载激光雷达感知的点云深度学习表示(空间结构/光栅化/坐标系)