精华内容
下载资源
问答
  • Alpha通道

    2021-08-03 16:55:55
    什么是Alpha通道 阿尔法通道(α Channel或Alpha Channel)是指一张图片的透明和半透明度。 例如:一个使用每个像素16比特存储的位图,对于图形中的每一个像素而言,可能以5个比特表示红色,5个比特表示绿色,5个...

    什么是Alpha通道

    阿尔法通道(α Channel或Alpha Channel)是指一张图片的透明和半透明度。

    例如:一个使用每个像素16比特存储的位图,对于图形中的每一个像素而言,可能以5个比特表示红色,5个比特表示绿色,5个比特表示蓝色,最后一个比特是阿尔法。在这种情况下,它要么表示透明要么不是,因为阿尔法比特只有0或1两种不同表示的可能性。

    又如一个使用32个比特存储的位图,每8个比特表示红绿蓝,和阿尔法通道。在这种情况下,就不光可以表示透明还是不透明,阿尔法通道还可以表示256级的半透明度,因为阿尔法通道有8个比特可以有256种不同的数据表示可能性。

    在图像处理中alpha到底是什么

    Alpha通道是计算机图形学中的术语,指的是特别的通道,意思是“非彩色”通道,主要是用来保存选区和编辑选区。

    为什么用Alpha表示透明度

    Alpha 没有透明度的意思,是透明度的属性。opacity 和 transparency 才和透明度有关,前者是不透明度,后者是透明度。比如 css 中的「opacity: 0.5」就是设定元素有 50% 的不透明度。后来 Alvy Ray Smith 提出每个像素再增加一个 Alpha 通道,取值为0到1,用来储存这个像素是否对图片有「贡献」,0代表透明、1代表不透明。也就是说,「Alpha 通道」储存一个值,其外在表现是「透明度」,Alpha 和透明度本身没啥关系。

    通道

    通道作为图像的组成部分,是与图像的格式密不可分的,图像颜色,格式的不同决定了通道的数量和模式,在通道面板中可以直观的看到。通道的不同,自然我们给它们的命名就不同。

    RGBA

    RGBA是代表Red(红色) Green(绿色) Blue(蓝色)和 Alpha的色彩空间。虽然它有的时候被描述为一个颜色空间,但是它其实仅仅是RGB模型的附加了额外的信息。采用的颜色是RGB,可以属于任何一种RGB颜色空间,但是Catmull和Smith在1971至1972年间提出了这个不可或缺的alpha数值,使得alpha渲染和alpha合成变得可能。提出者以alpha来命名是源于经典的线性插值方程αA + (1-α)B所用的就是这个希腊字母。(线性插值是数学、计算机图形学等领域广泛使用的一种简单插值方法)

    真正让图片变透明的不是Alpha 实际是Alpha所代表的数值和其他数值做了一次运算 。

    Alpha 通道用法

    Alpha 通道是为保存选择区域而专门设计的通道。在计算机图形学中,一个RGB颜色模型的真彩图形,用由红、绿、蓝三个色彩信息通道合成的,每个通道用了8位色彩深度,共计24位,包含了所有彩色信息。为实现图形的透明效果,采取在图形文件的处理与存储中附加上另一个8位信息的方法,这个附加的代表图形中各个素点透明度的通道信息就被叫做Alpha通道。

    Alpha通道使用8位二进制数,就可以表示256级灰度,即256级的透明度。白色(值为255)的Alpha像素用以定义不透明的彩色像素,而黑色(值为0)的Alpha通道像素用以定义透明像素,介于黑白之间的灰度(值为30-255)的Alpha像素用以定义不同程度的半透明像素。因而通过一个32位总线的图形卡来显示带Alpha通道的图形,就可能呈现出透明或半透明的视觉效果。

    在生成一个图像文件时,并不必须产生 Alpha 通道。通常它是由人们在图像处理过程中人为生成,并从中读取选择区域信息的。因此在输出制版时, Alpha 通道会因为与最终生成的图像无关而被删除。但也有时,比如在三维软件最终渲染输出的时候,会附带生成一张 Alpha 通道,用以在平面处理软件中作后期合成。

    除了 photoshop 的文件格式 PSD 外, GIF 与 TIFF 格式的文件都可以保存 Alpha 通道。而 GIF 文件还可以用 Alpha 通道作图像的去背景处理。因此,我们可以利用 GIF 文件的这一特性制作任意形状的图形。

    一个透明或半透明图形的数学模型

    设Alpha值[0,255]区间映射为[0,1]区间相对应的值表示,即Alpha值为0—1之间的数值。则图形文件中各个像素点可表示为:

    Graphx(Redx,Greenx,Bulex,Alphax)
    

    屏幕上相应像素点的显示值就转换为:

    Dispx(Redx*Alphax,Greenx*Alphax,Bluex*Alphax)
    

    Alpha通道不仅用于单个图形的透明或半透明显示,更重要的是在图像合成中被广泛运用。

    Alpha通道数据进行图像混合的算法

    我们把需要组合的颜色计算出不含Alpha分量的原始RGB分量然后相加便可。如:两幅图像分别为A和B,由这两幅图像组合而成的图像称为C,则可用如下四元组表示图A和B,三元组表示图像C:

    A:(Ra,Ga,Ba,Alphaa)
    B:(Rb,Gb,Bb,Alphab)
    C:(Rc,Gc,Bc)
    

    根据上述算法,则:

    Rc=Ra*Alphaa+Rb*Alphab
    Gc=Ga*Alphaa+Gb*Alphab
    Bc=Ba*Alphaa+Bb*Alphab
    

    这就是两图像混合后的三原色分量。如果有多幅图像需要混合,则按照以上方法两幅两幅地进行混合。

    Alpha通道在多媒体开发中的应用

    1)图像处理软件Photoshop中的Alpha通道
    在图像处理软件Photoshop中,通道是一个最为基本的概念,颜色通道代表了该图像的主要色彩信息,附加通道有用于印刷的专色通道和存储、修改选取区域的Alpha通道。

    通常情况下,单独创建的新通道就是Alpha通道,这个通道并不存储图像的色彩,而是将选择域作为8位灰度图像存放并被加入到图像的颜色通道中。因而Alpha通道的内容代表的不是图像的颜色,而是选择区域,其中的白色表示完全选取区域,黑色为非选取区域,不同层次的灰度代表不同的选取百分率,最多可有256级灰阶。

    对Alpha通道内容的操作,即是创建、存储、修改我们所需要的选取区域。如在目标图层上载入该选区(即运用该Alpha通道)便可实现任意层次的选取。通过多个Alpha通道之间的计算或Alpha通道与图层的合成便能够产生许多特殊的效果。因此,Alpha通道功能可以说是Photoshop编辑合成多媒体作品中所使用的背景图片、主题图片、按钮、导航标志等素材的一大法宝。

    2)Alpha通道在动画创作软件中的应用
    Alpha通道无论是在二维动画软件还是三维动画软件中都有广泛的应用。

    大家熟知的3DMAX动画软件中提供了动画作品后期合成的工作环境(即VIDEO POST),利用VIDEO POST的图像合成功能可以实现一次处理许多不同层次的图像文件与动画场景合成的设定。其中使用最频繁的合成方式Alpha composing就是靠Alpha通道来实现的。

    3DMAX能根据文件的输出格式产生包含Alpha通道的32位文件格式(特别是32位的Targa图像文件)。当进行渲染时,任何不含物体的区域的Alpha值为0,实色的物体的Alpha值为255,而透明材质的Alpha值介于0~255间。利用3DMAX的这一特性可在该软件或其它软件中实现各种透明重叠的图像或动画效果。

    Flash矢量动画中同样具有Alpha通道功能的运用。Alpha是Flash动画场景中图形符号(graphic)的一个主要属性,改变其值(0~100之间)便可改变对象符号的透明程度。如在各关键帧设定某图形符号以不同的Alpha值,则该图形符号就呈现出动态变化的透明效果。通过编写动作脚本(Action scripting),用户交互式地改Alpha值,更能使动画作品生动有趣。

    3)利用Alpha通道在视频编辑软件中实现高叠轨道的透明合成
    在视频处理软件中,通常要将多个视频片段按照要求重叠在一起形成透明或半透明效果。Premiere电影编辑软件里提供了多达97个视频高叠轨道用以实现影像片段的合成。在高叠片段的video Option命令中有一个专门用于合成的透明设置选项Transparency,它提供了许多key Type基本(透明)类型。其中Alpha channel key就是利用影像或图片的Alpha通道在片段上选定区域形成透明效果。

    一些影视创作人员在节目编辑中,为了把广告的图标、报道题花等图案作为标记或栏目标题叠加在画面上,使用Photoshop、3DMAX或Cool3d等软件生成带Alpha通道的32位TGA图片或图片序列,在非编系统软件中运用Alpha channel key功能实现标题字幕或图标的高叠。

    Alpha通道技术本身并不复杂,但其运用上的创意是无限的。不断总结在多媒体课件作品开发中运用Alpha通道技术的途径以提高作品技术质量、增强作品艺术感染力,是一个永无止境的课题。

    opengl 里面,alpha值通常是在激活了混合操作之后起作用的。用来将已经处理过的片元颜色值与存储在帧缓存中的像素颜色值结合起来。如果不进行混合操作,每个新的片元都将被opengl当成是不透明的,覆盖掉已经存在的所有颜色值。利用混合操作可以实现半透明等状态。可以这样看alpha值,将片元的RGB分量考虑为对颜色的表示,而将alpha值分量考虑为颜色的不透明度。

    展开全文
  • 读取图片 使用函数cv2.imread...cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道 cv2.IMREAD_GRAYSCALE:读入灰度图片 cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道 import ...

     读取图片

    使用函数cv2.imread(filepath,flags)读入一副图片
    filepath:要读入图片的完整路径
    flags:读入图片的标志
    cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
    cv2.IMREAD_GRAYSCALE:读入灰度图片
    cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道

    1. import numpy as np

    2. import cv2

    3. img = cv2.imread(‘1.jpg’,cv2.IMREAD_GRAYSCALE)


    opencv 读取图片后通道为BGR的格式,这里做个示范将图片的左半边设置为透明效果。

    import cv2
    import numpy as np
    
    img = cv2.imread("/home/shuai/Desktop/lena.jpg")
    
    b_channel, g_channel, r_channel = cv2.split(img)
    
    alpha_channel = np.ones(b_channel.shape, dtype=b_channel.dtype) * 255
    # 最小值为0
    alpha_channel[:, :int(b_channel.shape[0] / 2)] = 100
    
    img_BGRA = cv2.merge((b_channel, g_channel, r_channel, alpha_channel))
    
    cv2.imwrite("lena.png", img_BGRA)
    
    

    import cv2
    import numpy as np
    def get_channel():
        for fil in os.listdir(r'C:\Users\83815\Desktop\LR'):
            file=os.path.join(r'C:\Users\83815\Desktop\\LR',fil)
            img=cv2.imread(file,cv2.IMREAD_UNCHANGED)
            print(img.shape)

    (120, 125, 3)输出为3表示没有alpha通道,如果是4表示有alpha通道

     

    参考:

    https://blog.csdn.net/qq_34840129/article/details/91128420

    https://blog.csdn.net/helloworld1108/article/details/88563457

    展开全文
  • #Alpha 通道检查 这个演示展示了如何跟踪 NSImage 像素数据。 当您单击 NSImage 时,您可能会发现单击事件会响应 NSImage 的 alpha 通道
  • DirectX11 Alpha通道

    千次阅读 2015-10-04 11:15:38
    Alpha通道1. 漫反射贴图控制Alpha通道在RGB混合中,源alpha分量可以用来控制透明度。混合方程中的源颜色来自于像素着色器。我们会在最后一章中看到,我们将漫反射材质的alpha值作为像素着色器的alpha输出。也就是说...

    Alpha通道

    1. 漫反射贴图控制Alpha通道

    在RGB混合中,源alpha分量可以用来控制透明度。混合方程中的源颜色来自于像素着色器。我们会在最后一章中看到,我们将漫反射材质的alpha值作为像素着色器的alpha输出。也就是说,漫反射贴图的alpha通道可以用来控制透明度。

    float4 PS(VertexOUT pin) : SV_Target
    {
        …
        // 从漫反射材质和纹理中提取alpha
        litColor. a  =  gMaterial.Diffuse.a * texColor.a;
    
        return litColor;
    }

    2. 添加alpha通道

    你可以使用任何一款流行的图像处理软件为纹理添加alpha通道,比如Adobe Photoshop,然后使用一种支持alpha通道的格式(例如,32位BMP格式或DDS格式)保存图像文件。不过,这里我们会展示另外一种方法,使用我们在前一章介绍的DXTex实用工具插入alpha通道。

    假设我们有两幅图像:一幅是RGB彩色图像,另一幅是灰阶图像。这幅灰阶图像将作为alpha通道插入到彩色图像中(参见下图)。

    这里写图片描述
    ( RGB图像(左)和灰阶图像(右)。灰阶图像将插入到纹理的alpha通道中。)

    现在,运行DXTex工具程序,打开本章演示程序文件夹下的fire_rgb.bmp文件。火焰纹理会被自动载入为一个24位RGB纹理(即,D3DFMT_R8G8B8),其中红色、绿色和蓝色分量各占8位。我们必须为纹理指定一种支持alpha通道的格式,比如32位ARGB纹理格式D3DFMT_A8R8G8B8或支持alpha通道的D3DFMT_DXT5压缩格式。在菜单栏中选择Format>Change Surface Format命令,弹出如图9.7所示的对话框。选择DXT5格式,单击OK。

    这里写图片描述
    (修改纹理格式。这样就创建了一幅带有alpha通道的压缩纹理。)

    我们下一步要做的是向alpha通道导入数据。我们要把图9.6所示的8位灰阶贴图导入到alpha通道中。在菜单栏中选择File>Open Onto Alpha Channel Of This Texture命令,然后再选择Format>Generate Mip Maps命令。此时会弹出一个对话框,要求我们指定包含alpha数据的图像文件的位置。选择本章演示程序文件夹下的fire_a.bmp文件。图9.8展示了插入alpha通道后的程序界面——可以看到纹理已经与背景颜色混合在一起了。我们可以通过选择View> Change Background Color…菜单命令改变背景颜色。或者选择View>Alpha Channel Only命令,让窗口只显示alpha通道。

    这里写图片描述
    (带有一个alpha通道的纹理。火焰纹理已经与蓝色背景混合在一起了。)

    现在,指定一个文件名(比如,fire.dds),保存纹理。

    展开全文
  • GUI方案中ALPHA通道处理介绍。。。。。。。。。。。。。。
  • Alpha通道的的webm格式的视频。
  • Android 平台上使用的 ETC1 并不包含 Alpha 通道,因此如果想要平衡体积与质量,可以尝试将纹理拆分为两份:不包含 Alpha 通道的与包含 Alpha 通道的,然后在运行时通过 Shader 将两个纹理合并起来。 需求 支持处理...

    介绍
    Android 平台上使用的 ETC1 并不包含 Alpha 通道,因此如果想要平衡体积与质量,可以尝试将纹理拆分为两份:不包含 Alpha 通道的与包含 Alpha 通道的,然后在运行时通过 Shader 将两个纹理合并起来。

    需求
    支持处理场景、Prefab 中的材质
    收集使用到的 Shader 以便后续改写处理
    增加 Alpha 通道材质
    自动替换材质的 Shader 并设置纹理字段
    准备工作
    需要将使用到的 Shader 编辑通道分离版本,即同时读取两张纹理显示。要注意的是需要尽量保持纹理属性名字一致,这样可以减少特殊情况处理。

    处理思路
    获取 Shader
    private static void GetShadersInGameObject(GameObject go, List list)
    {
    var renderers = go.GetComponentsInChildren(true);

    foreach (var renderer in renderers)
    {
        if (renderer == null)
        {
            continue;
        }
    
        foreach (var material in renderer.sharedMaterials)
        {
            if (material == null || material.shader == null)
            {
                continue;
            }
    
            if (!list.Contains(material.shader.name))
            {
                list.Add(material.shader.name);
            }
        }
    }
    

    }
    分离 Alpha 纹理
    这里要注意,分离出来 Alpha 纹理需要继承原纹理的导入选项。

    var originTextureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
    var settings = originTextureImporter.GetPlatformTextureSettings(“Android”);
    settings.textureCompression = TextureImporterCompression.Compressed;
    originTextureImporter.SetPlatformTextureSettings(settings);
    originTextureImporter.SaveAndReimport();

    AssetDatabase.ImportAsset(alphaPath);
    var textureImporter = AssetImporter.GetAtPath(alphaPath) as TextureImporter;
    textureImporter.mipmapEnabled = false;
    textureImporter.textureType = TextureImporterType.Default;
    textureImporter.SetPlatformTextureSettings(settings);
    textureImporter.SaveAndReimport();
    遍历方法
    由于需要修改 Renderer 的材质属性,因此按照 Renderer 逐个处理其材质即可。

    private static void ProcessScene()
    {
    var gos = SceneManager.GetActiveScene().GetRootGameObjects();

    foreach (var go in gos)
    {
        Traverse(go.transform, ProcessTransform);
    }
    
    AssetDatabase.SaveAssets();
    

    }

    private static void Traverse(Transform t, System.Action action)
    {
    action.Invoke(t);

    for (int i = 0; i < t.childCount; i++)
    {
        Traverse(t.GetChild(i), action);
    }
    

    }

    private static void ProcessTransform(Transform t)
    {
    var noRuntimeRenderer = t.GetComponent();
    if (noRuntimeRenderer != null)
    {
    return;
    }

    var renderers = t.GetComponents<Renderer>();
    foreach (var renderer in renderers)
    {
        if (renderer == null)
        {
            Debug.LogError("Renderer error: " + t.name, t);
            continue;
        }
    
        ProcessRenderer(renderer);
    }
    

    }

    private static void ProcessRenderer(Renderer renderer)
    {
    if (renderer.sharedMaterials == null || renderer.sharedMaterials.Length == 0)
    {
    Debug.LogError("Renderer has no material: " + renderer.name, renderer);
    return;
    }

    foreach (var material in renderer.sharedMaterials)
    {
        if (material == null || material.shader == null)
        {
            Debug.LogError("Material error: " + renderer.name, renderer);
            continue;
        }
    
        switch (material.shader.name)
        {
            case "CustomShader":
                ProcessMaterial(material, "_MainTex", renderer);
                break;
            default:
                break;
        }
    }
    

    }
    替换 Shader
    private static void ProcessMaterial(Material material, string mainTexName, Renderer renderer)
    {
    var texture = material.GetTexture(mainTexName) as Texture2D;
    var alphaTexture = ProcessTexture(texture);

    string dir = Path.GetDirectoryName(material.shader.name);
    string name = Path.GetFileName(material.shader.name);
    string alphaShaderName = dir + "_Alpha" + "/" + name;
    
    Texture mainTexture = material.GetTexture(mainTexName);
    Vector2 scale = material.GetTextureScale(mainTexName);
    Vector2 offset = material.GetTextureOffset(mainTexName);
    
    material.shader = Shader.Find(alphaShaderName);
    
    SetTexture(material, "_MainTex", mainTexture, scale, offset);
    SetTexture(material, "_AlphaTex", alphaTexture, scale, offset);
    
    EditorUtility.SetDirty(material);
    

    }

    private static void SetTexture(Material material, string propertyName,
    Texture texture, Vector2 scale, Vector2 offset)
    {
    material.SetTexture(propertyName, texture);
    material.SetTextureScale(propertyName, scale);
    material.SetTextureOffset(propertyName, offset);
    }

    转载于:http://www.googln.net/

    展开全文
  • 1、前言 抠图有基本工具抠图(如快速选择工具、魔棒等),还有一种是通道抠图。 基本工具抠图:是通过颜色不一样来得到选区。 通道抠图:是通过亮度不同来得到选区。...记住:Alpha通道白色表示选区,黑色
  • 图像处理的Alpha通道

    千次阅读 2019-04-16 21:56:17
    一、Alpha通道的概念与功能 在计算机图形学中,一个RGB颜色模型的真彩图形,用由红、绿、蓝三个色彩信息通道合成的,每个通道用了8位色彩深度,共计24位,包含了所有彩色信息。为实现图形的透明效果,采取在图形文件...
  • Alpha通道的图标显示vb.net代码,
  • 基于图像的窗框的Alpha通道合成形式
  • 背景:ETC1图片格式的罪孽,不支持Alpha通道。于是程序员们将一些气力浪费在Alpha通道的处理上。 为了能使用ETC1,同时某些透明效果必须有Alpha通道,一般的处理方式是将RGB和Alpha分为两张图片分别储存。 只存Alpha...
  • Unity支持播放带Alpha通道视频的方法
  • 我们常见的RGB图像通常只有R、G、B三个通道,在图像处理的过程中会遇到往往需要向图像中添加透明度信息,如公司logo的设计,其输出图像文件就需要添加透明度,即需要在RGB三个通道的基础上添加alpha通道信息。...
  • seeThru, HTML5视频与alpha通道透明度 seeThru - 带alpha通道透明度的HTML5视频 这个包为 HTML5 <video> 元素中缺少alpha通道添加了"支撑点"。 以前称为 jquery seethru""在视频中,你的HTML5视频源被渲
  • 图像中Alpha通道

    千次阅读 2016-12-26 14:29:17
    我们知道一个彩色图像包含三种颜色通道:GBR,每个通道在各个像素上都拥有具体的强度...Alpha通道就是在原来的GBR三个通道上加一个通道,用于向图像中的像素指定透明度,也是8位,那么有Alpha通道的文件就是32位位图文
  • Nuke对图片添加Alpha通道

    千次阅读 2020-07-04 23:42:16
    单纯对一张图片添加Alpha通道 exr图片对shuffle节点传递出来的通道,该通道不具有alpha,让他保持原来图片的模样(RGBA),但是调节的是我们分离出来的通道信息。 对带有黑色图片添加Alpha通道,并且让黑色部分...
  • ImagXpress支持处理Alpha通道信息来管理图像的透明度,Alpha通道支持PNG ,TARGA和TIFF文件,同时还支持BMP和ICO文件。如果说保存的图像样式不支持Alpha通道,就将会丢弃alpha通道。 对图像添加Alpha通道  要添加...
  • 使用该软件可以让你检测任意图片格式,png,jpeg, jpg , bmp, gif, tiff等的每个像素的rgb还有alpha通道的值。只要一动鼠标就可以检测到。 可以运行在windows, linux,mac
  • 覆盖为支持Alpha通道的wpColorPicker 覆盖以更好地实现覆盖虹膜的功能 仅在输入中运行,并且在true中定义了数据alpha 屏幕截图 wpColorPicker wpColorPicker在Alpha通道模式下 用法 在主题选项或插件中的文件夹...
  • 如何去掉PNG的Alpha通道

    千次阅读 2019-02-13 18:36:08
    如何去掉PNG的Alpha通道
  • 四通道图像中的alpha通道

    万次阅读 2013-10-29 19:50:02
    在非压缩的32位RGB图像中,每个像素是由四个部分组成:一个Alpha通道和三个颜色分量(R、G和B)。当Alpha值为0时,该像素是完全透明的,而当Alpha值为255时,则该像素是完全不透明。   Alpha混色是将源像素和背景...
  • python处理PNG的alpha通道

    千次阅读 2020-12-10 18:12:31
    今天处理图像的时候,发现PNG格式的图片居然有4个cahnnel,除了RGB外,还有一个alpha通道,来代表不透明度。 自己实验了一下,代码效果展示一下: 原图 1.读图 path = 'your_image_path.png' img = cv2.imread(path...
  • Alpha通道及合成运算

    千次阅读 2019-05-19 22:23:26
    转载:... 前言 在看《VTK图形图像开发进阶》的时候,第七章中提到了Alpha合成技术,不明白是什么,所以。。。...Alpha通道是一个8位的灰度通道,该通道用256级灰...
  • Alpha 通道的模式保存在以后每次打开 PSD 文 件的时候都能随时调用 Alpha 通道的选区;他细心,她粗心感冒了还吃着甜筒,而他就算在大老远也会给她送药,照顾好她;或者不切换选区工具的前提下右键单击;他细心
  • ImageMagick-6.8.9-Q16 - 只是拆分PNG alpha 通道工具

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,269
精华内容 18,107
关键字:

alpha通道