Saat saya menggunakan paket ndimage.label(img)
yang diimpor dari scipy
untuk memberi label pada gambar PNG skala abu-abu, perilakunya seperti ini.
Saya memiliki dua gambar dengan beberapa bentuk yang dibuat oleh Photoshop
:
Gambar pertama :
http://imageshack.us/a/img140/8669/onehx.png
Saya melakukan kode ini pada gambar di atas.
>>> from scipy.misc import imread
>>> from scipy.ndimage import (label,find_objects)
>>> img=imread('first.jpg')
>>> x,y = label(img)
>>> print y # Prints exactly "4" shapes ,which is right.
4
>>> f=find_objects(x)
>>> print f # Returns exactly the "4" slices of the considered shapes.
[(slice(16L, 61L, None), slice(149L, 189L, None)),
(slice(30L, 40L, None), slice(60L, 90L, None)),
(slice(50L, 70L, None), slice(20L, 120L, None)),
(slice(96L, 149L, None), slice(130L, 186L, None))]
Sampai saat ini, ini berfungsi dengan baik.
Tapi ketika saya membuat bentuk dengan kuas halus seperti yang ditunjukkan di sini:
Gambar kedua:
http://imageshack.us/a/img822/5696/twozg.png
Saya menjalankan kode ini pada gambar kedua
>>> from scipy.misc import imread
>>> from scipy.ndimage import (label,find_objects)
>>> img=imread('second.jpg')
>>> x,y = label(img)
>>>print y # Prints more than "5" shapes ,which is wrong.
6
>>> f=find_objects(x)
>>> print f # Return more than the "5" slices of the considered shapes.
#But still has the "5" slices of the "5" considered shapes
#among the other slices which I'm confused of.
[(slice(16L, 61L, None), slice(149L, 189L, None)),
(slice(30L, 40L, None), slice(60L, 90L, None)),
(slice(50L, 70L, None), slice(20L, 120L, None)),
(slice(96L, 149L, None), slice(130L, 186L, None)),
(slice(126L, 170L, None), slice(65L, 109L, None)),
(slice(127L, 128L, None), slice(79L, 80L, None))] #This is the extra object.
Saya hanya ingin tahu mengapa ndimage.label(img)
memberi label lebih dari bentuk yang dipertimbangkan ketika saya menggunakan kuas halus.
Ya, itu bisa memberi label pada bentuk yang dipertimbangkan tetapi mengapa pelabelan tambahan dan bagaimana cara menghilangkan bentuk berlabel tambahan.
Catatan:
(1)Bentuk tambahannya bukan bentuk genap, melainkan daerah hitam tipis.!!
(2)Perilakunya sama jika gambarnya dalam format RGB.
( 3)pola nilai bukan nol pada bentuk yang digambar dengan kuas halus terlihat seperti:
>>> obj_6 #Not quite right but it's similar to this structure
array([[ 0, 0, 1, 1, 1, 1, 0, 0],
[ 0, 1, 6, 12, 15, 9, 3, 0],
[ 0, 7, 24, 50, 57, 35, 12, 1],
[ 2, 14, 52, 105, 119, 74, 24, 3],
[ 2, 16, 60, 122, 139, 86, 29, 4],
[ 1, 10, 37, 77, 88, 54, 18, 3],
[ 0, 3, 12, 25, 29, 18, 5, 1],
[ 0, 0, 1, 4, 5, 3, 1, 0]], dtype=uint8)
(4) Untuk mendapatkan gambaran keseluruhan :
satu:dua:< br>
Terima kasih atas kesabaran Anda.
Pembaruan(1):
Untuk memperjelas, saya memposting dua gambar dan hasil terkait:
obj_6
. Bisakah Anda juga mempostingsecond.jpg
di suatu tempat? - person Warren Weckesser   schedule 07.10.2012label(img)
pada filetwozg.png
menggunakan struktur default (struktur +), saya mendapatkan 6 fitur, karena bentuk kuas memiliki satu piksel yang hanya terhubung ke piksel lainnya melalui satu diagonal. Jika saya menggunakan struktur 3x3 penuh, saya mendapatkan 5 fitur. - person Warren Weckesser   schedule 07.10.2012