回答
// Loop through the images pixels to reset color.
for(x=0; x<image1.Width; x++)
{
for(y=0; y<image1.Height; y++)
{
Color pixelColor = image1.GetPixel(x, y);
int grayScale = (int)((originalColor.R * .3) +
(originalColor.G * .59) + (originalColor.B * .11));
//create the color object
Color newColor = Color.FromArgb(grayScale, grayScale, grayScale);
image1.SetPixel(x, y, newColor);
}
}
转换彩色像素灰度使用该
Gray = Green * 0.59 + Blue * 0.11 + Red * 0.30;
对于要转换首先为灰度深褐色。然后,只需通过一组缩放三联如[1,0.95,0.82]你可以玩这个三重得到正确的外观...这样的代码可能会...
for(x=0; x<image1.Width; x++)
{
for(y=0; y<image1.Height; y++)
{
Color pixelColor = image1.GetPixel(x, y);
int grayScale = (int)((originalColor.R * .3) + (originalColor.G * .59) + (originalColor.B * .11));
//create the color object
Color newColor = Color.FromArgb(grayScale, grayScale, grayScale);
//now apply a sepia filter
pixelColor.R = newColor.R*1;
pixelColor.G = newColor.G*0.95;
pixelColor.B = newColor.B*0.82;
image1.SetPixel(x, y, pixelColor);
}
}
有成倍的每个像素有很多方法可以去饱和彩色图像。事实上,可能没有一种“真实”或“正确”的方式来做到这一点,尽管有些方法比其他方法更“正确”。
我假设你的图像是RGB(红绿蓝)格式(尽管BGR也很常见)。
最简单的这种方式应该适用于大多数照片(但对于合成图像来说不那么合适),就是仅使用3个RGB通道的绿色通道。人类对光谱中绿色部分的变化最敏感,因此绿色通道覆盖了大部分可见光范围,并且与所需的灰度图像非常接近。
生成灰度图像的更好方法是使用3个RGB通道的加权平均值。选择相等的权重(0.33 * R + 0.33 * G + 0.33 * B)将给出相当好的灰度图像。其他凸面权重(总和为1的非负权重)将给出不同的结果,其中一些可能被认为更美观,并且一些可能考虑感知参数。 (YUV uses these weights:Y = 0.299*R + 0.587*G + 0.114*B
)
您可以在图像总是转换成仅具有单个灰度信道(和2“颜色”信道),诸如HSV(V是灰度),YUV另一颜色空间(Y是灰度)或La(灰度)。差异不应该很大。
术语“去饱和度”来自HSV空间。如果您将图像转换为HSV,请将S通道(饱和度)设置为全零,然后渲染图像,您将得到3通道去饱和“彩色”图像。
将这些灰度通道复制到RGB会给你一个3通道去饱和“彩色”图像 - 其中所有3个RGB通道是相同的。
一旦你有了这个3通道(RGB)去饱和的图像,你可以乘以一个单独的权重每个通道彩色图像 - 棕褐色图像。
给定一个灰色像素[v,v,v]
,像这样着色:[v*a, v*b, v*c]
,例如0 <= a,b,c <=1
。
private Bitmap grayscale(Image image)
{
Bitmap btm = new Bitmap(image);
for (int i = 0; i < btm.Width; i++)
{
for (int j = 0; j < btm.Height; j++)
{
int ser = (btm.GetPixel(i, j).R + btm.GetPixel(i, j).G + btm.GetPixel(i, j).B)/3;
btm.SetPixel(i, j, Color.FromArgb(ser, ser, ser));
}
}
return btm;
}
var color = new Bitmap("file.jpg");
var bw = color.Clone(new Rectangle(0, 0, color.Width, color.Height),
PixelFormat.Format1bppIndexed);
- 1. 如何将图像转换为java中的棕褐色?
- 2. SciLab中的图像处理(将图像转化为棕褐色)
- 3. 在iPhone转换图像为黑白,深褐色,灰度等SDK
- 4. 在Android中将位图转换为棕褐色
- 5. 通过Renderscript应用棕褐色ScriptIntrinsicColorMatrix将图像转换为绿色阴影
- 6. 将图像转换为黑色和白色的问题C
- 7. 棕褐色在黑莓中的图像效果
- 8. 如何将棕褐色的弧度转换为度数
- 9. 使谷歌地图插件黑/白或与棕褐色过滤器
- 10. Javascript:棕褐色或双色调图像效果?
- 11. Java将图像输出为灰度和棕褐色
- 12. Java OpenCV:如何将彩色图像转换为黑白图像?
- 13. 在Python中处理图像为棕褐色色调
- 14. 更改黑色和白色的图像颜色和棕褐色按钮点击使用jquery
- 15. 清理棕褐色(x)的
- 16. 将JPEG图像转换为黑白
- 17. 将灰度图像转换为黑白
- 18. 如何将普通视图颜色更改为棕褐色?
- 19. Python - 删除(转换为白色)图像的非黑色像素
- 20. 如何减少当我将普通图像转换为棕褐色图像时的时间消耗?
- 21. GDI System.Drawing.Printing将白色转换为黑色
- 22. easeljs棕褐色和灰度
- 23. ImageMagick棕褐色效果
- 24. 棕褐色45给我0.9999
- 25. 将视频音调变成棕褐色
- 26. 棕褐色在相机预览视图
- 27. imagecopyresampled将图像转换为黑色
- 28. 如何将彩色TIFF图像转换为黑白使用BitMiracle.LibTiff.Silverlight.dll
- 29. 将彩色指纹图像转换为黑白
- 30. 徘徊时获取棕褐色效果图像和全彩色?
为什么这些值乘以组件?这是否给棕褐色?我怀疑它的确存在,但一个解释会很有用。 – ChrisF
红色(255,0,0)绿色(0,255,0)蓝色(0,0,255)他们一起制造255,255,255的白色。如果您使用纯RGB的上述公式进行计算,则结果接近255。 – hungryMind