1. Home
  2. チュートリアル
  3. Rubyビットマップトレース

Rubyビットマップトレース

意図

ビットマップトレースは、ビットマップデータをエッジを検出してベクターデータに変換することを目的としています。 この検出は、グレー値の比較によって行われる。 エッジを検出するためには、色値が十分に異なっていなければならず、そうでなければトレースに失敗する。

ビットマップイメージをトレースする

トレースの開始は、画像を選択し、トレースアイコンをクリックすることで行われます。


すると、以下のようなウィジェットが表示されます。

パラメータを調整し、「トレース」をクリックすると、トレース処理が開始されます。
ソース画像と選択された値に応じて、トレース結果が表示されます。

注意:設定の結果、トレースが空になった場合、エラーメッセージがポップアップし、ベクターは作成されません!

パラメータ

外郭のみ

エッジの検出を最も外側の輪郭のみに限定する。 こうすることで、トレースアルゴリズムは、検出された輪郭の内側にある追加の輪郭を探索することがなくなります。 外形切断を行う場合に使用する機能です。

外周輪郭のみオン(下)とオフ(上)でトレースした場合

無視されるクラスタサイズ

このパラメータは、ノイズを最小限に抑えるために使用されます。 この値を上げると、Ruby似たような色を持つ画素の大きな集まりを無視するようになります。


クラスタサイズが1(上)、10(中)、30(下)の場合のトレース。
値を上げると、大きな白い点がフィルタリングされ、輪郭(黒い四角形)だけが検出されるようになります。

ブラック&ホワイトの閾値

このパラメータは、エッジを検出するために使用するコントラストのレベルを定義するため、トレースに最も大きな影響を与える。
この数値は、画素をベクトルに追加するかどうかの閾値として使用されるグレイ値(Index 0-255)を表します。 つまり、それ以下の値は黒、それ以上の値は白として扱われます。 その結果、黒と白の領域が検出されるエッジを定義します(この作業は、ユーザーには見えないバックグラウンドで行われます)。


選択されたしきい値に応じた結果。 最初は本当の暗部のみを検出し、最終的には白地のみを除外します。

レベルの平滑化

画像は画素で構成されており、拡大すると画素が「階段」を構成しています。

その画像をトレースすると、その「階段」をたどるベクトルが生成される。 ほとんどの場合、それは意図していないことです。
Smooth level “で、アルゴリズムがどの程度正確に輪郭に沿うかを定義できます。 スムージングを高くすると、エッジの立ったベクトルが少なくなります。 逆に、あまりに平滑化しすぎると、ディテールが失われてしまう可能性があります。


スムージングなし(左)とスムージングあり(右)で「o」をなぞると、円への影響がはっきりとわかります。


スムージングをしすぎると、ディテールが失われてしまいます。

活用方法

高画質なソース画像

Rubyビットマップは、常にグレースケール画像に変換されます。 高画質のビットマップを使用すると、最高の結果を得ることができます。 また、トレースする部分と背景が同じ色である画像もトレースしにくい。 明確なエッジは出せない。

  • 良好 – 高画質、高解像度、高コントラスト、エッジのアンチエイリアスが少ない、混色しない。
  • 悪い点 – 解像度が低い、コントラストが低い、アンチエイリアスがきつい
  • 悪い点: ナイフと背景の色が混ざってしまい、エッジを立てることができない。

トレース前の画像補正

コントラストや色のしきい値を調整することで、画像に含まれるノイズを可能な限り除去します。 ビットマップにないものは、すべて誤検出できない。 Ruby内外で守りたいヒントがあります。

Ruby取り込む前の調整

画像の必要な部分を切り取る

輪郭に不要なパーツは切り取る。 また、画像を回転させることで、必要な部分のみを切り抜くことができる場合もあります。

後です。

他のコンテンツを削除する

画像を画像編集ソフトで開き、背景や不要な部分をできるだけ削除する(消しゴム、色の置き換えなど)。

Ruby®内の調整

色のしきい値(トーンカーブ)を調整する

色のしきい値を調整し、エッジ品質を向上させます。 画像を選択し、右上の鉛筆をクリックすることで実行できます。

ここで、背景ができるだけ明るく輪郭ができるだけ黒くなるように画像を調整してみましょう。
また、その逆も可能ですが、逆輪郭を検出することになります

それを簡単に変えるために、画像を反転させることができます。 これは見慣れないものですが、トレースアルゴリズムのために輪郭を変えることはなく、正しいトレースを可能にします。

基本的にはそのような仕組みになっています。

  • X-軸は入力色(=原画のどのグレー値を変更するか)を定義します。
    • ポイントを左に移動させると、黒に向かう色が多く含まれる
  • Y軸は出力色(=入力色を何色に変化させるか)を定義します。
    • ポイントを上に持っていくと、明るい色になる(白に向かう)。
  • 任意の位置で線をつかみ、必要に応じて移動させることができる
    • それに応じて、ポイント間のすべての色が変更されます。

より詳しい説明は、Webで「トーンカーブ 入力 出力」と検索すると出てきます。

次の例は、その違いを説明するものです。


白背景、黒輪郭はなぞりやすく、思い通りの輪郭に仕上がります。


黒背景、白輪郭はトレースしにくく、逆輪郭になる。

概要

  • 画質の良い画像を使用する。
  • 品質の悪いビットマップ(例:低解像度、アーティファクトが多い、コントラストが低い、輪郭と背景の色が同じなど)は、通常、良いトレースを生成することができません。
  • トレースするために、できるだけ理想的な原画を準備する。
    ノイズや不要な部分を取り除き、コントラストや色のしきい値を調整することで、ないものは誤検出されない。
  • 達成すべきことを知る。
    適切なパラメータを適切な方法でいじる。 ただ試行錯誤をするだけでは時間がかかり、挫折することも多いでしょう。
  • ビットマップトレースでは魔法は使えない
    輪郭がはっきりしない場合(影がある、明るい部分が背景に溶け込んでいるなど)、単純にトレースすることはできません。
Updated on 9. 9月 2022

Related Articles