创建棕褐色调所需的基本操作是什么?我的参考点是perl imagemagick库,所以我可以轻松使用任何基本操作。我试图量化(使其灰度),着色,然后增强图像,但它仍然有点模糊。如何创建棕褐色调?
回答
如果您使用imagemagic命令行,这很容易。
http://www.imagemagick.org/script/convert.php
转换时使用 “-sepia音门槛” 的说法。
奇怪的是,PerlMagick API似乎不包括方法,直接这样做:
http://www.imagemagick.org/script/perl-magick.php
...以及任何棕褐色方法没有提及。
看看它是如何在AForge.NET库中实现的,C#代码是here。
的基础似乎是
- 它转换到YIQ色彩空间
- 修改
- 变换回RGB
全alrogithm是在源代码中,加解释了RGB→YIQ和YIQ→RGB变换。在C#中的深褐色转换器的
的代码链接的选项不再工作... =( – 2012-02-25 22:14:20
可以有人更新链接? – codejammer 2012-12-19 06:58:37
@codejammer http://bit.ly/ZP0Y3x – 2012-12-19 16:02:56
示例代码是在我的答案在这里可供选择:What is wrong with this sepia tone conversion algorithm?
算法来自this page,每个输入像素的颜色变换以下列方式:
outputRed = (inputRed * .393) + (inputGreen *.769) + (inputBlue * .189)
outputGreen = (inputRed * .349) + (inputGreen *.686) + (inputBlue * .168)
outputBlue = (inputRed * .272) + (inputGreen *.534) + (inputBlue * .131)
如果这些输出值中的任何一个大于255,则只需将其设置为 为255.这些特定值是Microsoft推荐的 棕褐色调的值。
这是在C#中,但是,基本概念是相同的。您可能可以将其转换为perl。
private void SepiaBitmap(Bitmap bmp)
{
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
System.Drawing.Imaging.PixelFormat.Format32bppRgb);
IntPtr ptr = bmpData.Scan0;
int numPixels = bmpData.Width * bmp.Height;
int numBytes = numPixels * 4;
byte[] rgbValues = new byte[numBytes];
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, numBytes);
for (int i = 0; i < rgbValues.Length; i += 4)
{
rgbValues[i + 2] = (byte)Math.Min((.393 * red) + (.769 * green) + (.189 * (blue)), 255.0); //red
rgbValues[i + 1] = (byte)Math.Min((.349 * red) + (.686 * green) + (.168 * (blue)), 255.0); //green
rgbValues[i + 0] = (byte)Math.Min((.272 * red) + (.534 * green) + (.131 * (blue)), 255.0); //blue
if ((rgbValues[i + 2]) > 255)
{
rgbValues[i + 2] = 255;
}
if ((rgbValues[i + 1]) > 255)
{
rgbValues[i + 1] = 255;
}
if ((rgbValues[i + 0]) > 255)
{
rgbValues[i + 0] = 255;
}
}
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, numBytes);
this.Invalidate();
bmp.UnlockBits(bmpData);
}
- 1. 将视频音调变成棕褐色
- 2. easeljs棕褐色和灰度
- 3. ImageMagick棕褐色效果
- 4. 任何NSImage的棕褐色版本
- 5. 棕褐色在相机预览视图
- 6. 操纵照片到棕褐色
- 7. 如何将普通视图颜色更改为棕褐色?
- 8. 这个棕褐色调转换算法有什么问题?
- 9. 如何将一个棕褐色效果添加到UIImageView?
- 10. 如何将棕褐色的弧度转换为度数
- 11. 徘徊时获取棕褐色效果图像和全彩色?
- 12. 对UIImage应用棕褐色,RGB,GrayScale效果
- 13. 棕褐色在黑莓中的图像效果
- 14. 在Android中将位图转换为棕褐色
- 15. 找出一张照片是否是一大组照片的单色/棕褐色
- 16. 通过Renderscript应用棕褐色ScriptIntrinsicColorMatrix将图像转换为绿色阴影
- 17. 使用OpenGL固定管线(例如多纹理)转动图像棕褐色
- 18. setParameters在设置棕褐色时失败,但缩放正常工作
- 19. 核心图像灰度过滤器和棕褐色过滤器iOS
- 20. 更改黑色和白色的图像颜色和棕褐色按钮点击使用jquery
- 21. 可可棕色噪音
- 22. 了解棕色标签
- 23. 如何在像棕褐色,黑色和白色,模糊等位图上应用不同的图像效果(滤镜)?
- 24. eclipse rcp调色板创建
- 25. 创建(彩虹)调色板
- 26. 如何从调色板中创建颜色进程
- 27. 如何从xcode 4中消除棕色框PageViewController
- 28. 什么是正确的棕色边框
- 29. 铬中的“棕色盒子问题”
- 30. Python:精简棕色数字的代码
因为我有Perl中的ImageMagick的对象,这不是最直接的方式,但它可以工作...但它似乎并不需要使用其他颜色的效果 – user83358 2009-07-01 21:54:19