KB)カメラなどで撮った自然画像を絵画のように変えてみたいことがあります。著名な市販レタッチソフトや、他の有償無償の画像ソフトにもこの種の機能が含まれています。本稿では比較的単純な手法で、油彩画に似た絵画調の画像を作成する方法を紹介します。はじめにカメラなどで撮った自然画像を絵画のように変えてみたいことがあります。著名な市販レタッチソフトや、他の有償無償の画像ソフトにもこの種の機能が含まれています。絵画調化専門のソフトもあります。ここでは比較的単純な手法で、油彩画に似た絵画調の画像を作ってみました。完成版のアプレットを見るアプレットの操作方法は、プログラムの使い方を参照してください。対象読者レタッチソフトで写真を絵画風に加工する仕組みに興味を持ち、自分で絵画調化ソフトを作ってみたい人。5.0を使っていますが、それ以前のバージョンでも大丈夫です。Filter)と呼ぶ、写真を芸術的な感じに変換する機能があります。一般的には、このような処理を「絵画調化」といいます。)と、パラメータを与えるだけのソフトによる完全な自動生成があります。)などに多くの論文が発表されています。これらのソフトは、原画像を解析し、絵画調化の際のストローク・タッチなどを最適化し、原画像を加工します。ペン画などがあり、それぞれ異なった手法が用いられます。油彩画は、絵の具を用いて筆で描きます。絵の具の本数は限られていますので、それらを混ぜ合わせたとしても、使われる色の種類はあまり多くありません。この理由で、まず、減色することが考えられます。rgbで言えば、階調を減らすことです。筆には、ある程度の大きさがあり、あまり細かい部分は忠実に描写できません。絵は省略することでもあり、ボカしのテクニックも使われています。そこで、平滑化することが考えられます。単なる平滑化ですと、原画像の僅かな変化部分も、それなりに結果に反映される欠点がありますので、非線形の平滑化手法(最頻値フィルタやメディアンフィルタなど)を用いてその感じを出します。プログラムの構成プログラムは、次の部分からなっています。原画像を読み込み、画面の左に表示します。着目するピクセルの周囲のピクセルを使用しますので、原画像の四辺、四隅をコピーして広げておきます。最初に上下を拡張し、それを左右に拡張します。拡張した結果は、図1のようになります。5までの範囲の最頻値取得が可能になります。ヒストグラムを採るためのカウンタをクリアします。配列counter[k][l][m]の定義で兼用しています。添字K、l、mの大きさは、それぞれ減色化の階調stepsにします。1階調当りのrgb値の幅をbaseと呼び、stepsから計算します。base=256/stepsのように整数間除算を行うと、端数が切り捨てになるので、base=(int)Math.ceil(256.0/steps)で切り上げています。切り捨てをすると、red1/baseなどが4になる恐れがあり、実行時エラーが発生します。このようにして得られたstepsとbaseの関係は下表の通りです。32原画像の階調を減らしながらヒストグラムを採ります。x方向(横方向)とy方向(縦方向)を、それぞれ-region/2からregion/2まで変化させて(region=3のときは、-1から1まで、region=5のときは、-2から2まで)、注目するピクセルの周辺のrgb値に対応するカウンタをインクリメントします。減色処理は、原画像のrgb値をbaseで整数間除算し、カウンタの添字klm値に用いることにより行います。図2に、その関係を示します。図ではsteps=4を用い(base=64となります)、例としてredを取り上げていますが、green、blueについても、同様に行います。頻度が最大となるrgb値を求める。配列counter[k][l][m]に対して、klm値を、それぞれ0からsteps-1の間でスキャンし、その最大値を求めます。そのときのklm値をk_max、l_max、m_maxとします。このままでは、まだrgb値になっていませんので、red1=k_max*base+base/2などによって、rgb値に変換します。図3は、steps=4(base=64)の場合について、k_maxからred1が求まり、減色化が行われる例を示しています。l_maxからgreen1、m_maxからblue1への変換も同様に行います。上記rgb値で描画します。}}プログラムの使い方アプレットを実行すると、上部に左から[原画像のファイル名][減色化の階調][最頻値取得の範囲]の各ドロップダウン選択ボックスと、[実行][明るく][暗く][標準]ボタンが表示され、下には左に原画像、右に絵画調化した画像が表示されます。絵画調化した画像の下には、その時の明るさ補正量が表示されます。3])での絵画調化画像が表示されますので、選択ボックスで任意の原画像を選び、階調や範囲を変えて[実行]ボタンをクリックして下さい。[明るく][暗く]などの変更は、選択ボックスの条件を変えても設定が残っています。明るさをデフォルト状態に戻したい場合は、[標準]ボタンをクリックして下さい。原画像によって、最適の階調があります。一般に多階調の方がきれいに見えますが、明るさを調整しながら階調を下げると、面白い効果が得られる場合があります。5])取ると、表現が荒っぽくなり、絵画らしく見えますが、細かい描写は失われます。下図で左上から、「原画像ファイル名」「減色のための階層数」「最頻値を求める周辺データの範囲」が示されています。[実行]ボタンをクリックすると、以上の選択された条件で絵画調化が行われますが、暗いと思われたので、[明るく]を一回クリックしてあります。右下の表示で、明るさ補正がされていることが分かります。実行結果の画面まとめ著名な市販ソフトや専用ソフトは、かなりの歴史があり、高度の技術によって、非常に良くできています。素人が簡単に真似できるものではありません。それらを実際に使ってみると、表現がややオーバーであったり、原画像を軽視していたりして、必ずしも満足な結果が得られません。ここで紹介した手法は簡単過ぎて、ひいき目に見ても、ようやく「絵画調かな」という程度ですが、自分で作った喜びが味わえます。これを出発点にして、さらなる改良をされることを望みます。版に改定)』を改良し、Java言語に書き直して、分かりやすく加筆したものです。パブリッシング、1993年7月です。著、エムディエヌコーポレーション、2004年1月などがあります。連載通知を行うには会員登録(無料)が必要です。会員の方はログインを行ってください。NECへ入社し、NEC初のコンピュータの開発に参画。2002年定年により退職し現在に至る。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。