ColorMatrix(颜色滤镜)介绍和使用

颜色矩阵,对每一个像素点的颜色(ARGB)进行更改,像ps一样的改变图像的颜色。因为运算大量的像素点,colorMatrix是native方法。
这里主要是讲怎么使用。
一。先看下面色彩矩阵表示方式
这里写图片描述
这里写图片描述


看看运行效果,将上面的色块进行矩阵变换,去掉了红色元素,透明度变为之前的0.8f,矩阵代码如下:

 matrix.set(new float[]{
                1,0,0,    0,   0,
                0,0,0,    0,   0,
                0,0,1,    0,   0,
                0,0,0,    0.8f,0,
        });

这里写图片描述

使用起来很方便,所有的代码如下:

 public ColorFilterView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.rgb(82, 173, 125));
        rect = new Rect(20, 20, 350, 350);
        //第二个色块
        paint1 = new Paint(Paint.ANTI_ALIAS_FLAG);
        rect1 = new Rect(20, 20, 350, 350);
        //设置颜色过滤矩阵,不增加颜色增量,去掉green
        //只保留红色,blue原来的0.9,
        ColorMatrix matrix = new ColorMatrix();
        matrix.set(new float[]{
                1,0,0,    0,   0,
                0,0,0,    0,   0,
                0,0,1,    0,   0,
                0,0,0,    0.8f,0,
        });
        matrix.setRotate(2,170);
        ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(matrix);
    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawRect(rect, paint);
        canvas.translate(0,400);
        canvas.drawRect(rect1,paint1);
    }

—–单调的颜色看不出问题,下面使用图片的效果,左边去是抽掉Red色素右边是去掉Green的色素的效果图—–
这里写图片描述这里写图片描述

—-代码如下——

   //设置颜色过滤矩阵,不增加颜色增量,去掉green
        ColorMatrix matrix = new ColorMatrix();
        matrix.set(new float[]{
                1,0,0, 0,   0,
                0,0,0, 0,   0,
                0,0,1, 0,   0,
                0,0,0, 1,   0,
        });
        ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(matrix);
        paint1.setColorFilter(colorFilter);
        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.meinv);
        rect2 = new Rect(20,20,20+bitmap.getWidth(),20+bitmap.getHeight()); 

 @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawBitmap(bitmap,rect2, rect2, paint);
        canvas.translate(0,bitmap.getHeight()+30);
        canvas.drawBitmap(bitmap,rect2,rect2,paint1);
    }

—-第三种反相效果—–
这里写图片描述
反相效果是比如原来RGB色素分别是:100、200、150;
反相后的RGB色素值分别是:155、55、 105;
前后加起来的刚好是255.
下面是矩阵代码,注意按Red、Green、Blue的分量到了最大,系数为-1.

   matrix.set(new float[]{
                -1, 0, 0, 0,   255,
                 0,-1, 0, 0,   255,
                 0, 0,-1, 0,   255,
                 0, 0, 0, 1,   0,
        });

//复古效果
  matrix.set(new float[]{
                1 / 2f, 1 / 2f, 1 / 2f, 0, 0,
                1 / 3f, 1 / 3f, 1 / 3f, 0, 0,
                1 / 4f, 1 / 4f, 1 / 4f, 0, 0,
                0, 0, 0, 1, 0,
        });

这里写图片描述

—-反色效果——
Red和Green的位置替换

 matrix.set(new float[]{
                0, 1f, 0, 0, 0,
                1f, 0, 0, 0, 0,
                0, 0, 1f, 0, 0,
                0, 0, 0, 1f, 0,
        });

这里写图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: imatest是一种用于校准color matrix的工具。Color matrix是一种矩阵,用于将图像的颜色表达方式从一种颜色空间转换为另一种颜色空间。通过使用imatest,我们可以验证color matrix的准确性和有效性。 首先,我们需要采集一组已知颜色和亮度的样本图像。这些样本图像可以代表各种真实世界的场景和颜色。然后,我们将这些样本输入到imatest中,以便它可以分析每个图像的颜色信息。 imatest会根据样本图像中的已知颜色和亮度值,计算出实际的颜色矩阵。然后,它会将这些实际矩阵与目标矩阵进行比较,以确定color matrix的准确性和效果。 如果经过校验后,imatest认为color matrix的结果与目标矩阵接近,那么我们可以确定color matrix已经校准好了。否则,我们需要调整color matrix的参数和设置,然后再次使用imatest进行校验,直到达到我们期望的结果为止。 imatest不仅可以用于校准color matrix,还可以用于测试和验证其他图像处理算法和技术的准确性和效果。对于图像处理领域的研究人员和工程师来说,imatest是一个非常有用的工具,可以帮助他们评估和优化算法和技术的性能。 ### 回答2: imatest的校准colormatrix是一个重要的步骤,用于确保图像的颜色准确性和一致性。colormatrix是一个矩阵,它定义了图像传感器捕捉到的原始颜色值与最终显示的颜色之间的转换关系。 在校准过程中,imatest首先使用一组已知颜色的测试图像来捕捉图像传感器的原始颜色数据。然后,通过对这些原始颜色数据执行数学运算,imatest根据一系列标准颜色值和色差计算方法,推导出用于校准colormatrix的转换矩阵。 为了确保校准的准确性,imatest还需要校准的测试设备具备高精度的色度测量仪器和标准参考图像。校准过程中要充分考虑光源、环境和设备参数等因素的影响。 一旦校准colormatrix完成,图像处理软件或硬件将使用这个校准矩阵将原始传感器数据转换为准确的显示颜色。这样可以确保图像的颜色准确无误,并且保证在不同的硬件或软件上显示的图像具有一致的色彩表现。 总的来说,imatest的校准colormatrix是一个关键的过程,它可以确保图像颜色的正确性和一致性,从而提高图像的质量和可靠性。 ### 回答3: IMATEST是一种用于校准颜色矩阵的测试工具。颜色矩阵校准是图像处理中的重要步骤,它可以准确地调整图像的色彩均衡,使颜色显示更加准确和真实。IMATEST校ColorMatrix算法通过比较参考图像和待校准图像之间的色彩差异来进行校准。 使用IMATEST校ColorMatrix,首先需要准备一个参考图像和一个待校准图像。这两个图像应该是相同的场景,但在色彩方面可能存在差异。然后,将这两个图像输入到IMATEST软件中,开始进行校准。 IMATEST校ColorMatrix通过分析参考图像和待校准图像之间的色彩差距来确定最佳的颜色矩阵校准参数。它会自动调整颜色矩阵的各个参数,直到两个图像的色彩差异最小化。校准过后,待校准图像的色彩就会变得更加准确,与参考图像更为接近。 IMATEST校ColorMatrix的优点在于它能够自动化处理校准过程,帮助用户节省时间和精力。它还提供了一些可调整的参数,如对比度和饱和度,以便进一步调整图像的色彩效果。 总之,IMATEST校ColorMatrix是一种有效的校准颜色矩阵的测试工具,通过比较参考图像和待校准图像的色彩差异来实现图像色彩的准确性和真实性。它是图像处理领域中重要的工具之一,可被广泛应用于摄影、电影制作、印刷等领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值