Bagaimana Anda membuat binariasi gambar berwarna?

14

Teman saya memiliki gambar berwarna dengan tulisan tangan Cina (pada dasarnya dengan mengambil foto atau memindai apa yang ditulisnya di selembar kertas putih), dan dia ingin saya mengubahnya menjadi gambar biner hitam dan putih. Apakah ada aplikasi di bawah Ubuntu yang dapat mencapai itu?

Berikut adalah contoh gambar:

masukkan deskripsi gambar di sini

Tim
sumber

Jawaban:

27

Apa yang Anda inginkan disebut sebagai "ambang" dalam pemrosesan gambar. Pada dasarnya, dibutuhkan gambar sebagai input dan output gambar yang memiliki semua piksel dengan nilai di bawah ambang batas yang ditetapkan menjadi hitam, dan semua piksel nilai yang di atas ambang batas diatur ke putih. Ini menghasilkan gambar hitam-putih dari gambar input sewenang-wenang.

Secara umum, Anda ingin mengonversi ke skala abu-abu terlebih dahulu untuk hasil yang lebih mudah diprediksi, tetapi dimungkinkan juga untuk mengirik gambar penuh warna.

Anda dapat menggunakan alat grafis seperti GIMP untuk melakukan ini secara interaktif (Anda akan menemukan alat melalui menu utama -> Warna -> Ambang Batas), atau Anda dapat menggunakan ImageMagick seperti ini:

convert colored.png -threshold 75% thres_colored.png

Menjalankan perintah di atas pada contoh gambar menghasilkan hasil yang ditunjukkan di bawah ini.

Versi hitam-putih dari gambar OP

Karena thresholding seringkali merupakan proses coba-coba untuk mendapatkan hasil yang Anda sukai, terutama jika gambar sumber tidak terlalu dekat dengan hitam-putih, saya merekomendasikan pendekatan GUI jika memungkinkan, tetapi jika itu bukan pilihan untuk alasan apa pun Anda bisa melakukannya melalui baris perintah juga. Untuk kontrol yang lebih baik dari output, Anda dapat menggunakan alat seperti kurva warna, level dan kontras terlebih dahulu untuk mengisolasi bagian terang dan gelap dari gambar dengan lebih baik sebelum pengirikan. (Sebenarnya, ambang batas dapat dilihat sebagai kasus ekstrem menggunakan alat kurva warna.)

sebuah CVn
sumber
2
Terima kasih! Karena gambar berwarna memiliki RBG tiga saluran, apa yang dapat / dapat diterapkan ambang secara umum?
Tim
@Tim Mungkin tergantung pada perangkat lunaknya, tetapi saya akan mengharapkan ambang (kecuali jika Anda menentukan per saluran atau untuk saluran tertentu, lihat misalnya -channelopsi konversi ImageMagick ) untuk diterapkan pada semacam "nilai" piksel, yang dihitung dari semua saluran. Itulah alasan mengapa saya mengatakan Anda mungkin ingin mengonversi ke skala abu-abu terlebih dahulu untuk hasil yang lebih mudah diprediksi. (Juga lihat hasil edit saya.)
CVn
Terima kasih! Apakah ada beberapa dokumentasi untuk apa ambang batas berlaku dalam perintah yang ditunjukkan pada posting Anda?
Tim
@Tim Tidak juga. Saya mengharapkan konversi untuk mengambil persentase dari nilai maksimum (yang seharusnya 256 per saluran) atau nilai tertentu, tetapi saya hanya bisa mendapatkan hasil yang bermanfaat ketika menentukan persentase. Ketika Anda melakukannya dengan alat grafis, termasuk GIMP, Anda biasanya akan memiliki histogram yang menunjukkan distribusi nada gambar; itu akan sangat membantu dalam memilih nilai yang tepat. Hanya menggunakan baris perintah, kecuali Anda memiliki alasan khusus untuk melakukannya, mungkin lebih banyak masalah daripada nilainya.
CVn
2
Sebagai catatan, ada metode ambang lainnya yang tidak harus bergantung pada tingkat ambang kode keras. Misalnya, ImageMagick termasuk -latyang melakukan ambang adaptif lokal, dengan mempertimbangkan piksel sekitarnya.
voithos
7

Anda dapat menggunakan Imagemagick:

convert test.png -colorspace Gray gray_colorspace.png

Dari sini .

Inilah yang saya dapatkan setelah menerapkan ke gambar Anda:

masukkan deskripsi gambar di sini

mkc
sumber
10
"Biner" berasal dari "bi" yang berarti "dua", jadi saya berasumsi OP ingin mengubah gambar menjadi hitam-putih murni. Mengubah ke skala grayscale menghasilkan lebih dari dua level.
CVn
Sepakat! masuk akal, +1.
mkc
2

-monochrome dari ImageMagick adalah opsi yang menggunakan dithering pintar, dan membuat output lebih terlihat daripada-thresholdjika Anda bermaksud menggunakannya untuk konsumsi manusia:

convert -monochrome signature.png out.png

masukkan deskripsi gambar di sini

Tidak membuat banyak perbedaan untuk gambar sederhana seperti itu, tetapi untuk gambar yang lebih besar, sangat mencolok.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
1

Anda juga dapat melakukan ini dengan mudah dengan netpbmtoolkit:

anytopnm inputfile | ppmtopgm | pgmtopbm > outputfile

ppmtopgmmengkonversi ke gambar skala abu-abu, pgmtopbmmengkonversi ke gambar hitam-putih, dan kami kemudian mengarahkan output ke file. Itu akan dalam format pbm; jika Anda menginginkan sesuatu yang lebih umum, Anda harus menambahkan konverter output (misalnya, pnmtopngatau semacamnya)

Wouter Verhelst
sumber