はじめに
本記事では、scikit-imageライブラリのdrawモジュールを使用して、さまざまな図形を描画する方法について解説します。直線、円周、楕円、多角形などの基本的な図形を画像上に描画するための関数について、実例とともに紹介していきます。これらの描画機能は、画像処理や計算機視覚の分野で、特徴検出やセグメンテーションの結果を可視化する際に非常に役立ちます。
コード

解説
モジュールのインポート
バージョン
画像の生成
500×500のRGB画像、要素はすべて0なので、黒い画像となります。
線の描写
図形を描写するには、要素がすべて0のRGB画像に線のデータを上書きします。例えば、座標(100, 200)から(200, 400)へ線を引くことができます。img[rr, cc, 0] = 1と設定することで、その線は赤色で表示されます。
多角形の描写
poly[:, 0]は多角形の頂点の行座標、poly[:, 1]は列座標を表します。img[rr, cc, 2] = 1を実行すると、青色のポリゴンが描画されます。
円の描写
disk((200,200), 50)を使用すると、座標(200,200)を中心に半径50の円が描画されます。img[rr, cc, :] = (1, 1, 0)とすることで、その円は黄色で表示されます(RGBのRedとGreenが1のため)。
楕円の描写
ellipse(400, 100, 50, 100, img.shape)を使用すると、座標(400, 100)を中心に、横半径100、縦半径50の楕円が描画されます。
円周の描写
circle_perimeter(100, 100, 30)を使用すると、座標(100, 100)を中心に半径30の円周が描画されます。
ベジェ曲線の描写
bezier_curve(100, 300, 50, 350, 100, 400, 1)を使用すると、(100, 300)、(50, 350)、(100, 400)を制御点とし、重み1のベジェ曲線が描画されます。
複数の楕円の描写
ellipse_perimeterでorientation=np.pi / 4のようにすることで、傾いた楕円を描写できます。
アンチエイリアスの線
line_aaにより、ギザギザしないなめらかな線を描写できます。
アンチエイリアスの円
circle_perimeter_aaを使用すると、ギザギザのないなめらかな円を描画できます。比較のため、アンチエイリアス処理されていない円を右側に表示しています。
画像の表示

まとめ
scikit-imageのdrawモジュールは、画像上に様々な図形を描画するための豊富な機能を提供しています。本記事では、draw.line、draw.circle_perimeter、draw.ellipse_perimeter、draw.polygon、draw.diskなどの関数を使用して、直線、円、楕円、多角形などの図形を描画する方法を紹介しました。これらの関数を活用することで、画像処理の結果を視覚的に表現したり、特定の領域を強調したりすることが容易になります。scikit-imageの描画機能は、画像解析や計算機視覚の作業において強力なツールとなるでしょう。
コメント