Renkli bir görüntüyü nasıl ikilileştirirsiniz?


14

Arkadaşımın Çin el yazısı ile renkli bir görüntüsü var (temelde beyaz bir kağıda yazdıklarını fotoğraflayarak veya tarayarak) ve siyah beyaz bir ikili görüntüye dönüştürmemi istiyor. Ubuntu altında bunu başarabilecek uygulamalar var mı?

İşte bir örnek resim:

resim açıklamasını buraya girin


Yanıtlar:


27

Görüntü işlemede ne istediğinize "eşik" denir. Temel olarak, bir görüntüyü giriş olarak alır ve belirli bir eşiğin altında bir değere sahip tüm pikselleri siyaha ayarlanmış ve tüm pikselleri beyaza ayarlanmış eşiğin üzerinde olan bir görüntü verir. Bu, keyfi bir giriş görüntüsünden siyah beyaz bir görüntü oluşturur.

Genel olarak, daha öngörülebilir sonuçlar için önce gri tonlamaya dönüştürmek istersiniz, ancak tam renkli bir görüntüyü eşleştirmek de mümkündür.

Bunu etkileşimli olarak yapmak için GIMP gibi bir grafik aracı kullanabilirsiniz (aracı ana menüden -> Renkler -> Eşik'ten bulacaksınız) veya ImageMagick'i böyle bir şey kullanabilirsiniz:

convert colored.png -threshold 75% thres_colored.png

Yukarıdaki komutu örnek görüntü üzerinde çalıştırmak aşağıda gösterilen sonucu verir.

OP görüntüsünün siyah beyaz versiyonu

Eşikleme genellikle memnun olduğunuz bir sonuç almak için bir deneme yanılma süreci olduğundan, özellikle kaynak görüntü zaten siyah beyaza çok yakın değilse, mümkünse GUI yaklaşımını öneririm, ancak bu, komut satırından da yapabileceğiniz herhangi bir nedenden dolayı bir seçenek değildir. Çıktının daha hassas kontrolü için, eşiklemeden önce görüntünün aydınlık ve karanlık kısımlarını daha iyi izole etmek için önce renk eğrileri, seviyeler ve kontrast gibi araçlar kullanabilirsiniz. (Aslında, eşik, renk eğrileri aracını kullanmanın aşırı bir durumu olarak görülebilir.)


2
Teşekkürler! Renkli bir görüntüde RBG üç kanal bulunduğundan, eşik genel olarak ne için geçerlidir / uygulanabilir?
Tim

@Tim Muhtemelen yazılıma bağlıdır, ancak eşik değerini (kanal başına veya belirli bir kanal için belirtmedikçe, bkz. ImageMagick'in dönüştürme -channelseçeneğine bakın), hesaplanan pikselin bir çeşit "değerine" tüm kanallardan. Bu yüzden daha öngörülebilir sonuçlar için önce gri tonlamaya dönüştürmek isteyebileceğinizi söyledim. (Ayrıca benim düzenlememe bakın.)
CVn

Teşekkürler! Yayınınızda gösterilen komutta eşiğin ne için geçerli olduğuna dair bazı belgeler var mı?
Tim

@Tim Pek değil. Dönüşümün (kanal başına 256 olması gerekir) maksimum değerin bir yüzdesini veya belirli bir değeri almasını bekledim, ancak yalnızca bir yüzde belirlerken yararlı bir sonuç alabilirim. GIMP dahil grafik bir araçla yaptığınızda, genellikle görüntünün ton dağılımını gösteren bir histogramınız olur; bu, uygun değeri seçmede çok yardımcı olacaktır. Sadece komut satırını kullanmak, özel bir nedeniniz olmadıkça, muhtemelen değerinden daha fazla sorun olabilir.
CVn

2
Bir yan not olarak, sabit kodlanmış bir eşik seviyesine güvenmek zorunda olmayan başka eşikleme yöntemleri de vardır. Örneğin, ImageMagick -lat, çevredeki pikselleri dikkate alarak yerel bir uyarlanabilir eşik gerçekleştirir.
voithos

7

Imagemagick'i kullanabilirsiniz:

convert test.png -colorspace Gray gray_colorspace.png

Gönderen burada .

Resminize uyguladıktan sonra aldığım şey:

resim açıklamasını buraya girin


10
"İkili", "bi" anlamına gelen "iki" den gelir, bu yüzden OP'nin görüntüyü saf siyah beyaza dönüştürmek istediğini varsayıyorum. Gri tonlamaya dönüştürmek iki düzeyden çok daha fazlasını verir.
CVn

Kabul! mantıklı, +1.
mkc


1

Bunu netpbmaraç kiti ile kolayca yapabilirsiniz :

anytopnm inputfile | ppmtopgm | pgmtopbm > outputfile

ppmtopgmgri tonlamalı bir görüntüye, pgmtopbmsiyah beyaz bir görüntüye dönüştürür ve daha sonra çıktıyı bir dosyaya yönlendiririz. Pbm formatında olacaktır; daha yaygın bir şey istiyorsanız, bir çıkış dönüştürücüsü eklemeniz gerekir (ör. pnmtopngveya benzeri)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.