0

いくつかの不規則なサイズと形状の画像を含む画像があるとします (ここでは簡単にするために円で示しています)。

画像付き画像

...どうやって:

  1. サブイメージの検出
  2. サブイメージを分割して別のファイルとして保存しますか?

ここに画像の説明を入力

理想的には、Python ソリューションを探しています。「連結成分分析」アルゴリズムと重心測定を試しましたが、最初のものは与えられたような不均一な画像で失敗し、2番目のものを適用して個別の画像を抽出する方法がわかりません。

SOで何度も質問され、回答されている、画像を同じサイズの均一な部分に分割することについては質問していないことに注意してください。

ご協力いただきありがとうございます。

4

1 に答える 1

2

背景が均一でサブ画像とは異なると仮定できる場合、次のアプローチが機能するはずです。

  1. 背景色を単純にマスキングして背景減算を実行します (また、サブイメージの内部に背景色を含めることができる場合は、塗りつぶしアルゴリズムがうまく機能します)。

  2. 連結成分分析を実行します。

上記の画像の python の例を次に示します。

from scipy import ndimage
import matplotlib.pyplot as plt

# Load
img = ndimage.imread("image.png")

# Threshold based on pixel (0,0) assumed to be background
bg = img[0, 0]
mask = img != bg
mask = mask[:, :, 0]  # Take the first channel for RGB images

# Connected components
label_im, nb_labels = ndimage.label(mask)

# Plot
plt.figure(figsize=(9, 3))
plt.subplot(131)
plt.imshow(img, cmap=plt.cm.gray)
plt.axis('off')
plt.subplot(132)
plt.imshow(mask, cmap=plt.cm.gray)
plt.axis('off')
plt.subplot(133)
plt.imshow(label_im, cmap=plt.cm.spectral)
plt.axis('off')
plt.subplots_adjust(wspace=0.02, hspace=0.02, top=1, bottom=0, left=0, right=1)
plt.show()

画像の結果(任意の形状): ここに画像の説明を入力

ここで、残りのタスクは、label_im 値に基づいて各サブイメージを保存/保存することです。

于 2015-05-17T19:15:52.740 に答える