ホームページ >バックエンド開発 >Python チュートリアル >Python を使用して画像をセグメント化する方法

Python を使用して画像をセグメント化する方法

WBOY
WBOYオリジナル
2023-08-26 15:12:123772ブラウズ

Python を使用して画像をセグメント化する方法

Python を使用して画像をセグメント化する方法

画像のセグメント化は、コンピューター ビジョンの分野で一般的に使用されるテクノロジです。画像を複数の独立した画像領域に分割し、各領域のピクセルが同様の特性を持つようにします。画像セグメンテーションは、認識、ターゲット検出、画像処理、その他のアプリケーションにおいて幅広い応用価値を持っています。この記事では、Python を使用して画像を分割する方法を紹介し、コード例を添付します。

まず、Python の画像処理ライブラリ Pillow をインストールする必要があります。 Pillow は、画像の読み込み、処理、保存に役立ちます。次のコマンドを使用して Pillow をインストールできます:

pip install pillow

Pillow をインストールした後、画像のセグメンテーションの練習を開始できます。まず、必要なライブラリをインポートする必要があります:

from PIL import Image
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt

次に、画像をロードして配列に変換する関数を定義します:

def load_image(image_path):
    image = Image.open(image_path)
    return np.array(image)

次に、画像を実行する関数を定義します。セグメンテーション :

def image_segmentation(image, num_segments):
    height, width, _ = image.shape
    image_flat = image.reshape((-1, 3))
    kmeans = KMeans(n_clusters=num_segments, random_state=0).fit(image_flat)
    labels = kmeans.labels_
    image_segmented = np.zeros_like(image_flat)
    for segment in range(num_segments):
        image_segmented[labels == segment] = kmeans.cluster_centers_[segment]
    image_segmented = image_segmented.reshape((height, width, 3))
    return image_segmented

上記のコードでは、KMeans アルゴリズムを使用して画像ピクセルをクラスター化し、画像セグメンテーションの領域を決定します。次に、各ピクセルを対応するクラスター中心に帰属させ、画像セグメンテーション結果を生成します。

最後に、画像セグメンテーションの結果を表示する関数を定義します:

def show_image(image):
    plt.imshow(image.astype(np.uint8))
    plt.axis('off')
    plt.show()

ここで、上で定義した関数を組み合わせて画像セグメンテーション実験を行うことができます。完全なサンプル コードは次のとおりです。

from PIL import Image
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt

def load_image(image_path):
    image = Image.open(image_path)
    return np.array(image)

def image_segmentation(image, num_segments):
    height, width, _ = image.shape
    image_flat = image.reshape((-1, 3))
    kmeans = KMeans(n_clusters=num_segments, random_state=0).fit(image_flat)
    labels = kmeans.labels_
    image_segmented = np.zeros_like(image_flat)
    for segment in range(num_segments):
        image_segmented[labels == segment] = kmeans.cluster_centers_[segment]
    image_segmented = image_segmented.reshape((height, width, 3))
    return image_segmented

def show_image(image):
    plt.imshow(image.astype(np.uint8))
    plt.axis('off')
    plt.show()

image_path = "image.jpg"
num_segments = 4

image = load_image(image_path)
image_segmented = image_segmentation(image, num_segments)
show_image(image_segmented)

上の例では、「image.jpg」という名前の画像をロードし、それを 4 つの領域に分割しました。最後に、画像セグメンテーションの結果を示します。

要約すると、この記事では、Python を使用して画像をセグメント化する方法を紹介します。画像のロードと保存には Pillow ライブラリを使用し、画像のセグメンテーションには KMeans アルゴリズムを使用し、最後にセグメンテーションの結果を表示しました。この記事が、画像セグメンテーションの原理と実践方法を理解するのに役立つことを願っています。

以上がPython を使用して画像をセグメント化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。