【发布时间】:2011-06-30 10:48:59
【问题描述】:
我正在尝试使用 3x3 矩阵实现图像卷积,其中我的颜色分量(每个范围从 0 到 255)使用预乘 alpha 进行存储。我能找到的所有教程(例如http://www.codeproject.com/KB/GDI-plus/csharpfilters.aspx)只描述了对 RGB 分量执行卷积计算,而没有提及 alpha 分量。
我当前的代码保持 alpha 组件不变。在处理每个像素都已设置完整 alpha 的图像时,我尝试过的过滤器看起来不错。当我有部分透明的像素时,例如boxblur 滤镜看起来很奇怪,因为当模糊发生时像素颜色不会传播到透明区域。
在运行卷积算法时,我对 alpha 分量执行哪些计算,以及在设置最终像素值时如何处理预乘 alpha? 另外,我是否将过滤器偏移添加到alpha 分量?
我尝试以与计算 RGB 分量相同的方式计算我的新 alpha 分量(即根据过滤器矩阵为该像素添加周围的 alpha 值),但我在透明区域的边缘出现彩色条纹,并且半透明像素开始变暗太多。我想我需要更改新的 RGB 组件以考虑新的 alpha 值,但我不确定该怎么做。
谢谢。
【问题讨论】:
标签: graphics image-processing 2d alphablending