PerfectVector
著者: Irene Kim

ベクター化する前にロゴのドロップシャドウを除去

コピー上の平坦化されたロゴから、識別可能な影を削除します。マスクをテストし、かすかな細部を保護し、オリジナルまたは再描画が必要な時期を認識します。

2 分で読める
目次

可能な場合は、フラットなオリジナルを取得して、ベクトル化する前にロゴのドロップ シャドウを削除します。平坦化されたラスターしかない場合は、目的のマークをそのトーンによって影から分離できるかどうかをテストします。明るい影の上に暗いマークを置くと、マスクとして使用できる場合があります。トーンが一致していたり​​、アートワークが薄かったりすると、同じクリーンアップが破壊的なものになる可能性があります。

最もきれいに見えるシルエットをロゴを復元した証拠として扱わないでください。穴、角、薄い部分、外側の輪郭を承認された基準と比較します。意図した境界が不明瞭な場合は、推測された形状を受け入れるのではなく、元の境界を探すか、意図的に再描画します。

閾値は意図ではなくトーンを分離します

フラット化されたファイルはそのままにしておきます。複製をテストし、意図した細部をすべて検査し、アートワークが削除されたり、影が残ったりする場合はマスクを拒否します。以下の成功例では、意図的に分離可能なトーンを使用しています。そのカットオフは普遍的なロゴ設定ではありません。

お手持ちの画像で試す
フル機能のツールを開く
無料でお試しいただけます。画像をドロップすると、登録なしでベクターのプレビューを確認できます。

まず影がまだエフェクトであるかどうかを確認します

編集可能なソースに別のエフェクトまたはオブジェクトとしてシャドウがまだ含まれている場合は、そのソースからのフラット エクスポートをリクエストしてください。そこでの効果を削除すると、混合ピクセルからマークを再構築することが回避されます。この記事では、アプリケーションのエフェクト コントロールはテストしません。

フラット化された PNG または JPG は異なります。マーク、影、背景がすでに画像に結合されている場合があります。柔らかい灰色の領域を消去しても、その下に隠された元の輪郭は表示されません。不要な効果ではなく、アートワークに属するスムーズ シェーディングについては、別のグラデーション ベクトル化ワークフローを参照してください。

カットオフを選択する前にマークを診断する

しきい値は、選択された値によってピクセルを分類します。マスクはこれらの決定を使用して、画像の一部を保持または非表示にします。ここでの明るさマスク ルートは、暗いピクセルを保持し、明るいピクセルを隠します。どのピクセルがロゴなのか影なのかはわかりません。

ソースの状態考えられるルート結果を拒否する理由
暗いフラットマークと明らかに明るい影複製で明るさマスクをテストする角が縮む、穴が変化する、または淡い部分が消える
マークとシャドウがトーンを共有オリジナルのアートワークを探すか描き直す1 つのカットオフでは、一致する値を意図によって区別できません
明るい文字または色のアクセントが暗いマークを伴うこれらの詳細を個別に保護するか、別の方法を使用してください画像全体の暗いピクセルを選択すると、それらを削除できます
承認された輪郭が隠れているか曖昧ですより良いリファレンスを入手するもっともらしい輪郭は元の形状を証明しない

画像エディターでピクセル値の読み取りを使用して、鮮明なマーク、鮮明な影、必要な最も弱い詳細を比較します。この例のグレースケール値は、黒の 0 から白の 255 までです。いくつかの場所をサンプリングしてください。単一の暗い隅がどこでも分離を証明するわけではありません。

作業コピーでダークピクセルマスクをテストする

この実行可能サンプルには Python 3 と Pillow が必要です。 Pillow 11.3.0 でテストしました。 logo-flat.png という名前の不透明な RGB 作業コピーを使用し、オリジナルを保持し、未使用の出力名を選択します。このルートは、暗い形状を保持する必要があるマーク用です。正当な光または色のアートワークを破棄する可能性があります。

  1. これを mask-dark-mark.py として保存します。Pillow イメージ リファレンスでは、point を使用した値のマッピングと、putalpha を使用したアルファ チャネルの適用について説明します。
from pathlib import Path
from PIL import Image
import sys
 
source = Path(sys.argv[1])
output = Path(sys.argv[2])
cutoff = int(sys.argv[3])
mask_path = output.with_name(output.stem + "-mask.png")
if not 0 <= cutoff <= 255:
    raise SystemExit("Use a cutoff from 0 to 255.")
if output.exists() or mask_path.exists():
    raise SystemExit("Choose new output names to preserve existing files.")
image = Image.open(source).convert("RGB")
mask = image.convert("L").point(lambda value: 255 if value < cutoff else 0)
result = image.convert("RGBA")
result.putalpha(mask)
mask.save(mask_path)
result.save(output)
  1. テストを実行します。 以下の制御されたソースでは、以下を使用しました。
python3 mask-dark-mark.py logo-flat.png logo-cleaned.png 100

これにより、グレースケール値が 100 未満のピクセルが保持されます。logo-cleaned-mask.png (白は保持されることを意味します) と、保持されたソース カラーをバイナリ透明度で保持する logo-cleaned.png が書き込まれます。作業ソースは変更されないままになります。

  1. 両方のファイルを検査します。 マスクを使用すると、欠けている部分や残った影を特定しやすくなります。変更された穴やエッジが白い表示スペースで隠されないように、明るい背景と暗い背景で透明な結果を表示します。比較を上書きするのではなく、テストごとに別の出力名を使用します。
  2. 承認または停止。 意図したマークと比較している間のみカットオフを変更します。影を除外しながらアートワークを維持する設定がない場合、この画像全体の明るさの方法は適切ではありません。選択的なレタッチは、局所的な欠陥を区別できるようにするのに役立つ場合があります。未知の輪郭には、オリジナルの描画または意図的な再描画が必要です。

代わりにグラフィカルエディタを使用する

GIMP では、選択マスクの作成に役立つ白黒操作としてしきい値を文書化しています。そのマニュアルには、しきい値処理によりアンチエイリアスが除去されることも警告されています。 レイヤーマスクは、どの部分を表示したままにするかを制御します。

これらはドキュメントベースの代替手段であり、ここでテストしたネイティブ GIMP ウォークスルーではありません。実行したルートは Pillow スクリプトです。ハード マスクは、任意のソース アートワークのソフト エッジ トランジションを保持しません。トランジションが重要な場合は、輪郭を選択的に選択するか、手動で再構築します。

元のコントロールが示していたもの

640 × 460 のフラット マークを作成し、右に 32 ピクセル、下に 26 ピクセルのオフセットでぼやけた影を追加し、結果を白に平坦化しました。マークはグレー 22 でしたが、その既知のサポート外のすべてのピクセルは 163 ~ 255 でした。カットオフ 100 では、作成されたマーク マスクが正確に生成され、余分な保持ピクセルや欠落マーク ピクセルはゼロでした。

その結果は、この既知のバイナリ エッジ デジタル制御に依存します。未知のロゴの正確な復元、アンチエイリアス処理されたエッジの保存、または PerfectVector の影除去機能を証明するものではありません。

実際のしきい値マスクと障害制御
明るい影を付けた元の平坦化された暗いマーク、その受け入れられたシルエット、および低いカットオフではマークが失われ、高いカットオフでは影が残る同じトーン コントロールを表示するプレビュー
分離可能なトーンにより、意図したマスクが生成されます。マークとシャドウのトーンを一致させると、一方のカットオフではマークが失われ、もう一方のカットオフでは不要なシャドウが残ります。

さらに 2 つの管理により、検査が重要である理由がわかります。

  • トーンのマッチング: マークとオフセット シャドウ グレーを 150 にしました。カットオフ 100 では、意図したマーク ピクセル 54,527 がすべて削除されました。 180 に上げるとマークは維持されましたが、16,128 個の不要なシャドウ ピクセルも残りました。重なり合った部分では、意図した境界が明るさによって区別されなくなりました。
  • かすかなディテール: グレー 185 で意図した 1 ピクセルのラインを追加しました。カットオフ 100 では、メインの暗いマークはそのまま残っていますが、そのディテールの 391 ピクセルすべてが削除されました。

これらは選んだマスクで実際に測定した失敗例であり、しきい値を上げ続けることを勧めるものではありません。入力と出力は自作のデジタル対照画像です。ネイティブの画像エディタでの検証や、PerfectVectorでの変換テストは実施していません。

トレースする前に輪郭を監査する

保存されたクリーンアップを、変更されていないソースおよび承認されたフラット参照(利用可能な場合)と比較して確認します。

  • 外側の輪郭には、切り取られた角、膨らんだ領域、または欠落した延長部分はありません。
  • カウンターと密閉された穴は、意図した形状を維持し、開いたままになります。
  • 細い線、淡いアクセント、小さなレタリングは、どこに属していても残ります。
  • オフセットされたシャドウは、2 番目のシルエット、リング、パッチ、またはソフト フリンジとして残りません。

詳細が消えた場合は、ソースに戻ります。シャドウの一部であると想定するのではなく、意図的に選択または再描画して復元します。隠れた境界線を区別できない場合は、回収の請求を中止し、元のデザインを要求してください。 ロゴベクトル化ガイドでは、自動トレースと手動リビルドの選択について説明しています。

影の削除と背景の透明化は、別個の承認決定となります。 透明背景 SVG ガイド の説明に従って、実際の透明度と残りのオブジェクトを検査します。白いプレビューだけでは、不要なピクセルが存在しないことは証明されません。

PerfectVector で合格マークをトレースする

PerfectVector は、編集可能なパスとして表示される形状が受け入れられるフラット ラスター ロゴを取得した場合に適合します。そのソースでロゴ ベクタライザーを使用し、同じ承認済みの輪郭、穴、および詳細をプレビューで検査します。

このソースのクリーンアップはベクトル化の前に行われます。このワークフローは、ソース マスクで影の削除を決定します。ベクトル プレビューでは、どのピクセルがマークとして意図されたものであるかは検証されません。プレビューに残った影の形状や欠落した詳細が表示される場合は、トレースを元のロゴの証拠として扱うのではなく、ラスターを再確認してください。結果を編集およびエクスポートするには、結果のロックを解除する必要があります。保護されたプレビューは表示専用です。

よくある質問

しきい値を使用するとロゴのドロップ シャドウを常に削除できますか? いいえ。保持する値が目的のマークと不要なピクセルを区別する場合にのみ機能します。一致するトーンの重なりやかすかな詳細により、画像全体のしきい値が不適切になる可能性があります。

影を削除すると、元の輪郭が明らかになりますか? 平坦化されたピクセルによって隠されている場合は信頼性がありません。承認された参考文献と比較するか、元の設計を取得するか、もっともらしい境界を回収された事実として扱うのではなく、意図的に再描画します。

主要なマークは残っているのに、なぜ細かい部分は消えてしまったのでしょうか? カットオフ保持よりも軽い場合があります。私たちのテストリファレンスでは、暗いマークは残りましたが、グレー 185 の線は 391 ピクセルすべてを失いました。ソースに戻り、意図したライトの詳細を個別に保護します。

情報源

  1. Pillow — 画像モジュール — テストされたスクリプトで使用される値マッピングとアルファチャネル操作を文書化します。
  2. GIMP — しきい値 — バイナリのしきい値、選択マスクの使用、およびそのアンチエイリアスの制限を定義します。
  3. GIMP — レイヤー マスクの追加 — レイヤーの表示部分と透明部分を制御するマスクについて説明します。

フラット マークが輪郭チェックに合格したら、そのロゴを使用して無料で開始します。結果を使用する前に、ベクター プレビューの穴、角、かすかな細部を受け入れたソースと照らし合わせて検査してください。

ブログのその他の記事

PerfectVector

ロゴやアートワークを
きれいで編集可能なSVGに変換

ベクター化とプレビューの確認は無料で、1日あたりの上限はありません。