Saya baru mengenal visi komputer dan pemrosesan gambar dan saya menggunakan kode ini

from skimage.feature import hog
hog_list, hog_img = hog(test_img_gray, 
                        orientations=8, 
                        pixels_per_cell=(16, 16), cells_per_block=(1, 1),
                        block_norm='L1', 
                        visualise=True,
                        feature_vector=True)
plt.figure(figsize=(15,10))
plt.imshow(hog_img)

Untuk mendapatkan gambar visualisasi HOG ini

enter image description here

Saya punya 2 pertanyaan saat ini:

  1. Ketika saya mencoba untuk menyimpan gambar ini (sebagai .pdf atau .jpg) gambar yang dihasilkan adalah hitam murni. Mengonversi gambar ini ke format PIL dan memeriksanya dengan

    hog_img_pil = Gambar.fromarray(hog_img) hog_img_pil.show()

Masih menunjukkan gambar sebagai hitam murni. Mengapa ini terjadi dan bagaimana cara memperbaikinya?

  1. Ketika saya mencoba menjalankan kode ini

    hog_img = cv2.cvtColor(hog_img, cv2.COLOR_BGR2GRAY)

Untuk mengonversi gambar menjadi skala abu-abu, saya mendapatkan kesalahan error: (-215) depth == CV_8U || depth == CV_16U || depth == CV_32F in function cvtColor. Apa yang harus saya lakukan untuk mendapatkan gambar ini dalam skala abu-abu dan mengapa ini terjadi?

Sebagai informasi tambahan, menjalankan hog_img.shape mengembalikan (1632, 1224) yang hanya merupakan ukuran gambar, yang awalnya saya tafsirkan bahwa gambar sudah dalam skala abu-abu (karena tampaknya tidak memiliki dimensi untuk saluran warna). Namun, ketika saya kemudian mencoba lari

test_img_bw = cv2.adaptiveThreshold(
    src=hog_img, 
    maxValue=255, 
    adaptiveMethod=cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
    thresholdType=cv2.THRESH_BINARY, 
    blockSize=115, C=4)

Saya mendapatkan kesalahan error: (-215) src.type() == CV_8UC1 in function adaptiveThreshold yang ini jawaban tampaknya menunjukkan bahwa gambar tidak dalam skala abu-abu.

Terakhir, sedikit informasi berguna lainnya adalah bahwa menjalankan print(hog_img.dtype) pada gambar akan mengembalikan float64.

Saya akan terus men-debug, sementara itu

Terima kasih untuk setiap pemikiran :)

1
lampShadesDrifter 11 Agustus 2017, 13:02

2 jawaban

Jawaban Terbaik
  1. Membalikkan gambar dengan hog_img_inv = cv2.bitwise_not(hog_img) dan menggunakan plt.figure(figsize=(15,10)) plt.imshow(hog_img_uint8_inv) menunjukkan bahwa garis-garis itu sebenarnya ada tetapi sangat samar (saya telah menyertakan gambar di sini untuk kelengkapan, tetapi Anda dapat melihatnya dengan jelai (tapi percayalah, itu ada)). Saya harus melakukan lebih banyak pemrosesan gambar untuk mendapatkan garis yang lebih dapat dibedakan. masukkan deskripsi gambar di sini

    lampShadesDrifter 11 Agustus 2017, 10:30

Jika memiliki masalah yang sama. Tetapi jika Anda melihat ke dalam dokumen, mereka juga menggunakan ini kode untuk visualisasi yang lebih baik:

# Rescale histogram for better display
hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 0.02))

Tapi saya masih memiliki masalah yang sama. Visualisasi dengan matplotlib tidak masalah. menyimpan gambar dengan opencv (atau skimage) hanya menyimpan gambar hitam...

0
Pablo 11 Agustus 2017, 10:33