如何将调色板应用于位图
Posted
技术标签:
【中文标题】如何将调色板应用于位图【英文标题】:How to apply a palette to a bitmap 【发布时间】:2022-01-21 22:35:16 【问题描述】:我正在自己制作一个 dicom 查看器。
修改dicom图片颜色成功,但是是纯色。
所以,为了解决单色部分,我带来了 dicom 调色板。 https://dicom.nema.org/dicom/2013/output/chtml/part06/chapter_B.html
但它以一种奇怪的方式进行,而不是我想象的方式。
经过深思熟虑,我发现位图的属性中有一个调色板。 但它根本不起作用。 搜索结果,很多答案可能都不行,建议直接触摸像素数据。 而且我调色板的长度总是为零。
Oncolor Red 版本
dicom HeartIronSetVersion
最终目标
for (int i = 0; i < bitmap2.Width; i++)
for (int j = 0; j < bitmap2.Height; j++)
actualColor = bitmap2.GetPixel(i, j);
int a = actualColor.A;
int r = actualColor.R;
Color col = palette[r];
//IronHeartsetWith Alpha
//redBitmap.SetPixel(i, j, Color.FromArgb(a, palette[r]));
//IronHeartSet
//redBitmap.SetPixel(i, j, col);
//RedVer
redBitmap.SetPixel(i, j, Color.FromArgb(a, r, 0, 0));
//redBitmap.SetPixel(i, j, Color.FromArgb((int)r, 1, 0, 0));
【问题讨论】:
从骨架图像看来他们正在使用L value
(照明),也许您可以尝试使用L = 0.299 * R + 0.587 * G + 0.114 * B
将rgb转换为灰色,然后应用映射?
实际目标是什么?使用位图类中的内置调色板?将现有调色板应用于彩色图像?首先创建调色板?
@JonasH 我已经做了调色板。更改此图像的颜色后,我将融合此图像。我不知道如何使用这个调色板来表达我在想的画面。
【参考方案1】:
我以为有一个特殊的代码可以在 diom 中应用调色板,但事实并非如此。
问题是由我的代码中调色板部分的像素错误引起的。
感谢所有回复的人。
(调色板中第 230 位之后的值为 0...)
结果
【讨论】:
以上是关于如何将调色板应用于位图的主要内容,如果未能解决你的问题,请参考以下文章