图片预处理技术介绍1——颜色调节

图片预处理

  大家好,我是阿赵。
  这一篇主要讲一下对图形的颜色控制。

1、 图片转灰度

  转灰度的计算,实际上是把一个图片每一个像素的颜色,都转变成对应的灰度值。在转变完之后,这个像素的rgb值都会变成一样。
  最简单的转灰度方法,就是颜色值C=(R+G+B)/3。

 for (int i = 0; i < cols.Length; i++)
 {
     grayCol = (cols[i].r  + cols[i].g  + cols[i].b)/3 ;
     newCols[i] = new Color(grayCol, grayCol, grayCol, cols[i].a);
  }

在这里插入图片描述

  不过一般来说,很少会这样均值的计算灰度,而是按照公式:

C = R*0.3+ G*0.59+B*0.11。
for (int i = 0;i<cols.Length;i++)
{
     grayCol = cols[i].r * 0.3f+ cols[i].g * 0.59f+ cols[i].b * 0.11f;
     newCols[i] = new Color(grayCol,grayCol,grayCol, cols[i].a);
}

在这里插入图片描述

  上图左边的是按照平均值做的灰度,右边是按照公式做的灰度。
  可以看出,左边的图片会比较暗一点,右边的图会对比度高一点。

2、 图片对比度调节

  对比度的调节,基本的原理是找一个中间灰度值的颜色,比如(0.5,0.5,0.5),然后用原图的每个色值和这个中间灰度值做Lerp插值。
  假如调节插值是0,那么颜色会完全变成0.5,那么整张图都会变成灰色。
在这里插入图片描述

  如果插值是1,那么整张图都没有变化,维持原来的颜色。
在这里插入图片描述

  如果插值超过1,那么颜色对比会越来越强烈
在这里插入图片描述

  如果插值小于0,那么值越小,颜色翻转得越厉害
在这里插入图片描述

    public static Texture2D ContrastRatio(Texture2D tex,float value)
    {

        int width = tex.width;
        int height = tex.height;
        Texture2D newTex = new Texture2D(width, height);
        Color halfCol = new Color(0.5f, 0.5f, 0.5f, 1);
        Color[] cols = tex.GetPixels(0, 0, width, height);
        Color[] newCols = new Color[cols.Length];
        for(int i = 0;i<cols.Length;i++)
        {
            newCols[i] = ColorLerp(halfCol, cols[i], value);
        }
        newTex.SetPixels(newCols);
        newTex.Apply();
        return newTex;
}

3、 图片单通道调节

  有时候我们会想增强图形的某个通道的颜色,降低某个通道的颜色
  比如只保留红色通道
在这里插入图片描述

  或者保持红绿通道不变,增强蓝色通道
在这里插入图片描述

  这个处理分为2种可能:

  1. 单独控制三个通道
      单独的对图片像素色值的某个一个通道增加或者减弱。这种做法一般是作用于颜色图片。增强或者减弱某一通道的效果。
  2. 保持三个通道的色值总和
      这种做法一般不是正常的图片处理,而是绘制遮罩图的时候用的。比如我们用RGB三个值代表了一定的百分比,那么三个值加起来应该是100%。如果增加了其中一种色值,其他两种色值就要降低,以保持加起来的总和还是100%。
### CT图像预处理技术与方法 对于CT图像而言,其预处理阶段同样重要,能够显著提升后续分析的质量。常见的预处理步骤包括但不限于灰度化、滤波降噪以及对比度增强等方面。 #### 灰度化 彩色图像是由多个通道组成的,在很多情况下并不利于直接处理或者展示。因此通常会先将其转化为单通道灰度图像以便简化数据结构并减少计算量。这一步骤可以通过加权平均的方式实现: \[ I_{gray} = 0.2989 \cdot R + 0.5870 \cdot G + 0.1140 \cdot B \] 其中\(R\)、\(G\)和\(B\)分别代表红绿蓝三个颜色分量[^1]。 #### 高斯滤波降噪 由于采集过程中不可避免的存在噪声干扰,所以需要采取措施去除这些不必要的成分。高斯模糊是一种广泛应用的空间域平滑技术,它能有效地抑制随机性的椒盐噪音而不影响太多细节特征。具体来说就是用一个二维正态分布核卷积原始图片像素值从而达到目的: ```python import cv2 img_blur = cv2.GaussianBlur(img, (5, 5), 0) ``` 这里`(5, 5)`表示模板尺寸而`0`则是标准差参数,默认自动计算合适数值。 #### 对比度拉伸/直方图均衡化 为了使目标物体更加清晰可见,往往还需要进一步改善视觉效果。一种简单有效的方法是对整个范围内的亮度级别重新分配权重使得暗部变得更亮同时保持整体平衡;另一种更复杂但是也更为强大的手段叫做自适应直方图均衡化(CLAHE),它可以局部调整不同区域间的差异性进而获得更好的显示质量: ```python clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8)) cl1 = clahe.apply(gray_img) ``` 上述代码片段创建了一个具有指定剪切限制(`clipLimit`)和平铺网格大小(`tileGridSize`)的对象实例,并应用于输入的灰度图像上。 #### 边缘保留去噪——双边过滤器 不同于普通的线性低通滤镜可能会破坏掉重要的边界信息,双边滤波可以在消除细碎斑点的同时很好地保护住原有轮廓线条不受损害。此过程依赖于两个独立但又相互关联的因素:空间邻近性和色彩相似度共同决定最终输出结果。 ```python bilateral_filtered_image = cv2.bilateralFilter(image, d=9, sigmaColor=75, sigmaSpace=75) ``` 这段脚本设置了直径为9个像素的影响半径以及对应的σ颜色强度偏差和σ坐标距离偏差作为控制变量来进行精细调节。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值