セピア調を作成するために必要な基本操作は何ですか?私のリファレンスポイントは、perl imagemagickライブラリです。私は簡単に基本操作を使用できます。私は量子化(グレースケールにする)、カラー化、そしてイメージを強調しようとしましたが、まだ少しぼやけています。セピア調はどのように作られていますか?
答えて
imagemagicコマンドラインを使用すると簡単です。
http://www.imagemagick.org/script/convert.php
変換する際に、 "-sepiaトーンしきい値" 引数を使用します。
http://www.imagemagick.org/script/perl-magick.php
を...と任意のセピアメソッドへの参照:
不思議なことに、PerlMagickのAPIは、直接これを行うための方法を含めていないようです。
AForge.NETライブラリでどのように実装されているかを見てください.C#コードはhereです。
基本は
フルalrogithmは、ソースコード内で、プラスに戻って変換、それを修正する
- は、YIQ色空間への変換であるように見えますRGB→YIQとYIQ→RGB変換について説明します。 C#でセピアコンバータの
のコードのリンクを他の色を使用するオプションを持っていないようですもう動作しません... =( –
誰かがリンクを更新することができますか? – codejammer
@codejammer http://bit.ly/ZP0Y3x –
サンプルコードここで私の答えで入手可能である:アルゴリズムはthis pageから来るWhat is wrong with this sepia tone conversion algorithm?
、各入力画素色は、次のように変換される:
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);
}
数学を使う点は何ですか?minを使用してifを使用して、255が大きいかどうかを確認します。 – AndreaBogazzi
計算された値をバイト範囲にクランプするには 'Math.Min'が必要です。それに続く 'if'ステートメントは完全に無意味です。 'rgbValues'は' byte'配列なので、その値のどれも> 255 – saucecontrol
- 1. コマンドラインGUIはどのように作られていますか?
- 2. C++プログラムはどのように作られていますか?
- 3. このセピア調変換アルゴリズムは何が問題になりますか?
- 4. GUIは最初からどのように作成されていますか?
- 5. リアルタイムのビルボードはAppleでどのように作られていますか?
- 6. ウェブホスティングサービスはどのように作成されていますか?
- 7. msiがタイムスタンプされているかどうかを調べるにはどうすればよいですか?
- 8. インターネットがどのように動作しているかを調べるには
- 9. ライブタイルはWindows 8でどのように作られていますか?
- 10. iPhone絵文字アプリはどのように作られていますか?
- 11. どのように作られていますか?どうすれば使えますか?
- 12. このウェブサイトはどのようなもので作られていますか?
- 13. Pythonで画像をセピア調に処理する
- 14. セピアに写真を操作する
- 15. EditTextが作成されているかどうか調べるには?
- 16. プロセスはどのようにしてELFファイルから作成されますか?
- 17. このアニメーションはどのように作られましたか?
- 18. Contextオブジェクトが1つのアクティビティから別のアクティビティにリークされているかどうかを調べるにはどうすればよいですか?
- 19. どのSMSが配信されていないか、または送信されていないか調べるにはどうすればよいですか?
- 20. アプリが動作しているURLを調べるにはどうすればよいですか?
- 21. 特定のAppがAndroidにインストールされているかどうかをXamarinから調べるにはどうすればよいですか?
- 22. forループを調べてBig Oのパフォーマンスを調べるにはどうすればよいですか?
- 23. .wavファイルからDTMFを調べようとしています
- 24. アラートがどこから発生したかを調べるにはどうすればよいですか?
- 25. 与えられたIntegerが特定のEnumに含まれているかどうかを調べるには?
- 26. 文字列に日付が含まれているかどうかを調べて抽出するにはどうすればよいですか?
- 27. Expressはミドルウェアをどのように再調整しますか?
- 28. Jqueryはどのように動作していますか?
- 29. セル配列内のセルにMATLABの特定の値が含まれているかどうかを調べるにはどうすればよいですか?
- 30. 評価はどのようにして得られますか?
私はperlでImageMagickのオブジェクトを持っているので、これは最も直接的な方法はありませんが、それは仕事ができる...しかし、効果 – user83358