私のアプリは、漫画にしたい人物の写真やビデオで動作します。したがって、手動でそれを行うアルゴリズムが必要です (画像操作クラスを持つ製品には c++/Qt を使用します)、または独自のアプリから呼び出して使用できる、それを行う CLI プログラムが必要です。
8 に答える
ここで遊ぶいくつかのアルゴリズムは次のとおりです。
- 漫画風のカラー パレットを取得するためのメディアンまたは反復ボックス ブラー フィルター
- 編集:バイラテラルフィルタリングは、ニーズにさらに適合するはずです
- いくつかのタイプのエッジを強化するための最小フィルター (ゼロ パーセンタイル)
- RGB カラー キューブの小さなサブキューブまたは球体を使用したカラー イメージのセグメンテーション
- ソーベル カーネルや 8 ウェイ エッジ トレーシングなどのエッジ検出を使用した、セグメント化された画像の一般的なエッジ強調
- エッジが強化された合成ぼかし/メディアン フィルター処理された画像
これらはかなり基本的なもので、実装は非常に簡単です。メディアン フィルターとボックス ブラー フィルターは、カーネル半径に関して線形時間の複雑さで実装できることに注意してください。
その他の編集:
Huang のアルゴリズムを理解すれば、ボックス ブラー フィルターの実装は簡単です。
読み物:
- 高速メディアンおよびバイラテラル フィルタリング(PDF を取得)
- Median Filtering Constant time (get the PDF)注:私はこれを C# で実装し、Mono/SIMD を使用してヒストグラムの合体を加速しましたが、直径が ~60 ピクセルを超えた場合にのみO ( r ) アルゴリズムよりも優れているように見えます。同等の数の add/sub 命令 (損益分岐点) の場合、C++ 実装はおそらく SIMD の利用にはるかに適しています。
他の読み物には、セグメンテーションとエッジ トレーシングに関するGonzalez & Woods の Digital Image Processing (古い版のようです) があります。8 方向のエッジ トレーシングは、頭を曲げるのが非常に難しい場合があります (オンピクセルまたはピクセル間エッジの選択と、エッジへのラッチ方法の選択)。いくつかのコードを喜んで共有したいと思いますが、100 行の行がここにうまく収まりません。
toonyphotos.comのように、ロトスコピーを試すことができます。
Blender用の非フォトリアリスティック レンダラーを実装するためのオープンソース (Google Summer of Code など) プロジェクトであるFreestyleを確認することをお勧めします。カートゥーン モードでの出力の例を次に示します:
(ソース: sourceforge.net )
私はこれを自分で行ったことはありませんが、画像を漫画風に見せるための 2 つのステップを考えてみました。
エッジを検出し、それらのエッジにかなり太い線 (数ピクセル) を描画します。
画像の色数を減らします。
これが役立つかどうかはわかりませんが、Photoshop のこのチュートリアルでは、次のことを行うことをお勧めします。
- Photoshop で画像を開く
- フィルター > ぼかし > ガウスぼかし。好みに応じて、半径を 3.0 以上に設定します。
- 編集 > フェード ガウスぼかし。ウィンドウがポップアップします。. . モードを暗くします。不透明度を下げる必要がある場合もあります。
これが結果です。
プログラムで同様のことができると思います。
実際、私はツールを知りませんが、osg (openSceneGraph) を見ることができます
osgFX ライブラリがあり、カートゥーン効果があります...そのライブラリからインスピレーションを得ることができるかもしれません...
たぶん(わからない)imagemagickには多くの機能があり、そのような機能があるかもしれませんが、わかりません...