เพื่อนของฉันมีภาพสีด้วยลายมือจีน (โดยทั่วไปแล้วถ่ายภาพหรือสแกนสิ่งที่เขาเขียนบนกระดาษสีขาว) และเขาต้องการให้ฉันแปลงเป็นภาพไบนารีขาวดำ มีแอปพลิเคชั่นภายใต้ Ubuntu ที่สามารถทำสิ่งนั้นได้หรือไม่
นี่คือภาพตัวอย่าง:
เพื่อนของฉันมีภาพสีด้วยลายมือจีน (โดยทั่วไปแล้วถ่ายภาพหรือสแกนสิ่งที่เขาเขียนบนกระดาษสีขาว) และเขาต้องการให้ฉันแปลงเป็นภาพไบนารีขาวดำ มีแอปพลิเคชั่นภายใต้ Ubuntu ที่สามารถทำสิ่งนั้นได้หรือไม่
นี่คือภาพตัวอย่าง:
คำตอบ:
สิ่งที่คุณต้องการเรียกว่า "เกณฑ์" ในการประมวลผลภาพ โดยทั่วไปจะใช้รูปภาพเป็นอินพุตและเอาต์พุตรูปภาพที่มีพิกเซลทั้งหมดที่มีค่าต่ำกว่าขีด จำกัด ที่กำหนดเป็นสีดำและพิกเซลทั้งหมดเป็นค่าที่สูงกว่าขีด จำกัด ที่ตั้งเป็นสีขาว ซึ่งส่งผลให้ภาพขาวดำจากภาพอินพุตโดยพลการ
โดยทั่วไปคุณต้องการแปลงเป็นโทนสีเทาก่อนเพื่อให้ได้ผลลัพธ์ที่สามารถคาดเดาได้มากขึ้น แต่ก็เป็นไปได้ที่จะ จำกัด ภาพสีเต็มรูปแบบเช่นกัน
คุณสามารถใช้เครื่องมือกราฟิกเช่น GIMP เพื่อทำสิ่งนี้แบบโต้ตอบ (คุณจะพบเครื่องมือผ่านเมนูหลัก -> Colours -> Threshold) หรือคุณสามารถใช้ ImageMagick ดังนี้:
convert colored.png -threshold 75% thres_colored.png
การรันคำสั่งด้านบนของภาพตัวอย่างจะให้ผลลัพธ์ที่แสดงด้านล่าง
เนื่องจากการกำหนดเกณฑ์ขั้นต่ำนั้นมักจะเป็นกระบวนการทดลองและข้อผิดพลาดเพื่อให้ได้ผลลัพธ์ที่คุณพอใจโดยเฉพาะอย่างยิ่งหากภาพต้นฉบับไม่ใกล้ขาวดำมากไปฉันแนะนำวิธี GUI หากเป็นไปได้ แต่ถ้าเป็นไปได้ นั่นไม่ใช่ตัวเลือกด้วยเหตุผลใดก็ตามที่คุณสามารถทำได้ผ่านบรรทัดคำสั่งด้วย สำหรับการควบคุมผลลัพธ์ที่ละเอียดยิ่งขึ้นคุณสามารถใช้เครื่องมือต่างๆเช่นเส้นโค้งสีระดับและคอนทราสต์ก่อนเพื่อแยกส่วนแสงและสีเข้มของภาพออกได้ดีกว่าก่อนที่จะทำการนวดใหม่ (ที่จริงแล้วขีด จำกัด สามารถมองเห็นได้ว่าเป็นกรณีที่รุนแรงในการใช้เครื่องมือเส้นโค้งสี)
-channel
ตัวเลือกการแปลงของ ImageMagick ) เพื่อนำไปใช้กับ "ค่า" ของพิกเซลซึ่งคำนวณ จากทุกช่อง นั่นคือเหตุผลที่ฉันบอกว่าคุณอาจต้องการแปลงเป็นโทนสีเทาก่อนเพื่อให้ได้ผลลัพธ์ที่คาดการณ์ได้มากขึ้น (โปรดดูการแก้ไขของฉันด้วย)
-monochromeจาก ImageMagick เป็นตัวเลือกที่ใช้การทำสมาร์ท dithering และทำให้การแสดงผลมากขึ้นกว่าที่-threshold
คุณตั้งใจไว้สำหรับการบริโภคของมนุษย์:
convert -monochrome signature.png out.png
ไม่ได้สร้างความแตกต่างอย่างมากสำหรับภาพที่เรียบง่าย แต่สำหรับภาพที่มีขนาดใหญ่กว่า
คุณยังสามารถทำสิ่งนี้ได้อย่างง่ายดายด้วยnetpbm
ชุดเครื่องมือ:
anytopnm inputfile | ppmtopgm | pgmtopbm > outputfile
ppmtopgm
แปลงเป็นรูปภาพระดับสีเทาpgmtopbm
แปลงเป็นรูปภาพขาวดำและจากนั้นเราเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ มันจะอยู่ในรูปแบบ pbm; หากคุณต้องการอะไรที่เหมือนกันคุณจะต้องเพิ่มตัวแปลงเอาต์พุต (เช่นpnmtopng
หรือบางอย่าง)