Saya mencoba menggunakan matplotlib
untuk membaca dalam gambar RGB dan mengubahnya menjadi skala abu-abu.
Di matlab saya menggunakan ini:
img = rgb2gray(imread('image.png'));
Dalam tutorial matplotlib mereka tidak membahasnya. Mereka baru saja membaca gambar
import matplotlib.image as mpimg
img = mpimg.imread('image.png')
dan kemudian mereka mengiris array, tapi itu tidak sama dengan mengubah RGB menjadi grayscale dari apa yang saya mengerti.
lum_img = img[:,:,0]
Saya merasa sulit untuk percaya bahwa numpy atau matplotlib tidak memiliki fungsi bawaan untuk mengkonversi dari rgb ke grey. Bukankah ini operasi yang umum dalam pemrosesan gambar?
Saya menulis fungsi yang sangat sederhana yang berfungsi dengan gambar yang diimpor menggunakan imread
dalam 5 menit. Ini sangat tidak efisien, tapi itu sebabnya saya berharap untuk implementasi profesional built-in.
Sebastian telah meningkatkan fungsi saya, tetapi saya masih berharap untuk menemukan yang built-in.
implementasi matlab (NTSC / PAL):
import numpy as np
def rgb2gray(rgb):
r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
gray = 0.2989 * r + 0.5870 * g + 0.1140 * b
return gray
gray = np.mean(rgb, -1)
berfungsi dengan baik. Terima kasih. Apakah ada alasan untuk tidak menggunakan ini? Mengapa saya menggunakan solusi dalam jawaban di bawah?
np.mean(rgb, -1)
.
0.2989 * R + 0.5870 * G + 0.1140 * B
Saya berasumsi bahwa itu adalah cara standar untuk melakukannya.
gray = np.mean(rgb, -1)
. Mungkinrgb[...,:3]
ada jika itu sebenarnya rgba.