RSS

วันเสาร์ที่ 12 มีนาคม พ.ศ. 2554

Brightness ปฐมบทแห่งการแปลงภาพ


บางครั้งเมื่อคุณถ่ายภาพออกมาแล้วภาพมันมืดมากเพราะ ตอนถ่ายแสงไม่พอ ตอนถ่ายลืมเปิดแฟลช หรือ แสงมากเกินไป กรณีถ่ายต่อหน้าดวงอาทิตย์ พอมาดูแล้วลายละเอียดภาพมันเหลือน้อยมาก ไอ้ที่ว่าเราจะไปถ่ายมันใหม่ซะก็ไม่ทันเวลาซะแล้ว สุดท้ายก็ต้องอาศัยภาพเดิมและความรู้คณิตศาสตร์เล็กน้อยในการทำให้ภาพแย่ๆ พวกนั้นยอม เผยรายละเอียดที่ถูกแสงกลบไว้หรือถูกเงามืดบังไว้ออกมา
คำถามแรกของหลายคนก็อาจจะเป็น การแปลงภาพไปเกี่ยวอะไรกับคณิตศาสตร์มันดูจะเป็นเรื่องอะไรที่ออกไปทางคอมพิวเตอร์ หรือไม่ก็เป็นเรื่องพวกศิลปะซะ ดูแล้วไม่น่าจะเกี่ยวกับคณิตศาสตร์ไปได้เลย คือมันเกี่ยวอย่างไม่ต้องสงสัย และเป็นเรื่องที่ขาดกันไม่ได้เลยก็ว่าได้ครับ ขั้นแรกเราต้องมาทำความรู้จักกับสิ่งที่เป็นองค์ประกอบสำคัญสิ่งหนึ่งของภาพกันก่อนครับนั้นคือ Pixel หรือ จุดภาพ
พิกเซล มาจากคำว่า "พิกเจอร์" (picture) ที่แปลว่า รูปภาพ และ "เอเลเมนต์" (element) ที่แปลว่า องค์ประกอบ
จุดภาพ หรือ พิกเซล (pixel) เป็นหน่วยพื้นฐานของภาพ คือ จุดภาพบนจอแสดงผล หรือ จุดภาพในรูปภาพที่รวมกันเป็นภาพขึ้น
"โดยภาพหนึ่งๆ จะประกอบไปด้วยจุดภาพหรือพิกเซลมากมาย และแต่ละภาพที่สร้างขึ้นจะมีความหนาแน่นของจุดภาพ หรือบางครั้งแทนว่าความละเอียด (ความคมชัด) ที่แตกต่างกันไป จึงใช้ในการบอกคุณสมบัติของภาพ จอภาพ หรือ อุปกรณ์แสดงผลภาพได้   ภาพที่มีจำนวนพิกเซลมาก จะมีความละเอียดของภาพมาก"
และในแต่ละจุดพิกเซลก็จะประกอบไปด้วยการรวมตัวกันของ แม่สีสามสีทางแสงอันได้แก่ แดง เขียว น้ำเงิน ในสัดส่วนต่างๆ กันทำให้เกิดเป็นจุดสีต่างๆของภาพ โดยทีนี้เราก็จะใช้ตัวเลข 256 ค่าในการระบุค่าความสว่างของแต่ละแม่สี แต่ละสีในจุดนั้นโดยใช้เป็นเลข 0 ถึง 255 โดย 0 คือ มืดมากสุด 255 คือสว่างที่สุด
แค่นี้ก็พอจะเกี่ยวกับคณิตศาสตร์แล้วใช่ไหม
แนวความคิดที่ผมกำลังจะทำมันก็ง่ายแสนง่ายชนิดเด็กประถมก็ทำได้ คือถ้าภาพหนึ่งภาพเหมือนเป็น Matrix ของตัวเลข ที่ระบุค่าพิเซลอยู่นั้น เราก็ดำเนินการกับค่าตัวเลขเหลานั้นเช่น เพิ่มค่าของพวกมันภาพก็จะสว่างขึ้น ลดค่าพวกมันภาพก็จะมืดลงเท่านั้นเองครับ
แต่ถ้าเราลดอย่างซี้ซั้ว ละก็ ก็อาจจะมีบางพิกเซล ค่าเกิน 255 หรือ ต่ำกว่า 0 ซึ้งมันไม่สามารถแสดงผลเป็นภาพได้
เราก็ต้องจำกัดกันนิดนึงว่าค่าผลที่ออกมาต้องอยู่ในช่วง 0-255 นอกจากนี้แล้วยังต้องรักษาสัดส่วนของส่วนที่มืดส่วนที่สว่างในภาพให้มากน้อยเท่าเดิมจะทำอย่างไงดีละ....
คำตอบนั้นก็คือใช้ ฟังก์ชั่นยกกำลัง
ฟังก์ชั่นยกกำลัง หรือที่รู้จักกันในชื่อ  Exponential  เป็นสิ่งที่จะดูเหมาะที่สุดสำหรับปัญหานี้
วาดรูปแบบ ฟังก์ชั่นที่รู้จักกันก่อนดีกว่านั้นคือ
  
.ให้ u เป็นค่าของพิกเซลขาเข้า (ภาพแย่ๆ ก่อนแปลง) f(u) จะเป็นค่าพิกเซลขาออก (ภาพที่ดีขึ้นหลังแปลง)
ได้จากนี้แล้วมาดูกันที่เงื่อนไขของมันคือ ห้ามเกิน 0 – 255 เราก็ได้ลักษณะฟังก์ชั่นเป็น

เพื่อให้จุดที่มืดค่าพิกเซลเป็น 0 ยังมืดต่อไป หรือยังมีค่าพิกเซลเป็น 0 ต่อไป และให้จุดที่สว่างหรือค่าเป็น 255 มีค่าเป็น 255 ต่อไป เสร็จแล้วเราก็มาแทนค่าหาพารามิเตอร์ตัวต่างๆ นานา ครับ


เพื่อความสะดวกเราก็เลยให้ a=b= 255 ซะเลยเป็นอันว่าจบ แล้วเหลือพารามิเตอร์ไว้หนึ่งตัวนั้นคือ t เป็นพารามิเตอร์ว่าจะสว่างขึ้นมากน้อยแค่ไหน หรือ มืดลงมากน้อยแค่ไหน จากการทดลองแล้วเราพบว่าช่วงการเปลี่ยนแปลงค่า t อยู่ที่

โดยถ้ามากน้อยไปกว่าน้อยภาพก็จะเข้าขั้นอุบาทว์ เพื่อความสะดวกตอนเปลี่ยนผมก็เลยให้

โดยที่

ฟังก์ชันหน้าตาหน้ารักของเราก็จะออกมาเป็น

คือถ้าค่า I=0 ภาพ เข้าก็จะเหมือนกับภาพออกไม่มีการเปลี่ยนแปลง และตอน I มากกว่า 0 ยิ่ง I มากยิ่งทำให้ภาพมืดขึ้นมาก ถ้า I น้อยกว่า 0 ยิ่ง I น้อยก็ยิ่งทำให้ภาพยิ่งสว่างมากขึ้น

เพื่อให้เป็นภาพก็เลยใช้ Maple วาดกราฟมาให้ดู แกน x เป็นค่าพิกเซลขาเข้า
แกน y เป็นค่า พิเซลขาออก เส้นกราฟแต่ละเส้นคือการเปลี่ยนแปลงฟังก์ชันตอนที่ ค่า I เป็นค่าต่างๆ สีแดงคือ ค่า I = 0 หรือไม่เปลี่ยนแปลงเลย เขียวกับเหลืองก็ I ติดลบ ทำให้ภาพมืดขึ้น สีฟ้ากับสีม่วงหรือ I เป็นบวกทำให้ภาพสว่างขึ้น

ลองดูไปที่สีน้ำเงินสิครับถ้าเราบอกว่าค่าตั้งแต่ 50 ลงมาเราถือว่ามืดหมด เราใส่ค่าพิกเซลที่ 50 ไปตามเส้นสีฟ้าภาพจะออกมาประมาณ 10 ซึ่งมืดมาก เราใส่ค่า 100 ไปมันก็ออกสี่สอบกว่า ถือว่ายังมืดอยู่ เราใส่ 150 ไปออก เริ่มสว่างขึ้นซะที

0 ความคิดเห็น:

แสดงความคิดเห็น

Related Posts Plugin for WordPress, Blogger...

บทความที่ได้รับความนิยม