Group Blog
 
All Blogs
 
การแยกบริเวณรูปภาพ ( Image Segmentation )

หลังจากที่เราได้เรียนรู้เรื่องของภาพแต่ละชนิดแล้วจะมาเข้าเรื่องการแยกบริเวณของภาพนะครับ ซึ่งการแยกบริเวณนั้นจะทำให้ได้ภาพที่เป็นวัตถุที่สนใจออกจากพื้นหลัง ที่จะทำให้ทราบว่าในภาพมีวัตถุอยู่กี่ชิ้นและพิกเซลใดเป็นของวัตถุชิ้นใด ซึ่งกระบวนการดังกล่าวถือเป็นพื้นฐานของการประมวลขั้นสูงที่จะนำไปสู่การตัดสินใจเกี่ยวกับคุณภาพของผลิตภัณฑ์ต่อไปและจะพบว่าวิธีการแยกบริเวณนั้นจะแบ่งออกเป็น 2 ประเภทหลักๆ ด้วยกัน คือ การแยกบริเวณด้วยการใช้ค่าเทรชโฮลหรือ ที่เรียกว่า Region based segmentation และอีกวิธีหนึ่งคือ การแยกบริเวณด้วยขอบวัตถุที่ตรวจจับได้ด้วยตัวตรวจจับขอบซึ่งเรียกกันว่า Edge based segmentation และเนื่องจากในการตรวจสอบชิ้นงานด้วยภาพแบบอัตโนมัตินั้นจะเป็นการทำงานที่มีแสงกระจายตัวอยู่อย่างสม่ำเสมอทำให้ภาพที่ได้จะมีบริเวณที่เป็นวัตถุและพื้นหลังที่มีความเข้มแสงแตกต่างกันอย่างเห็นได้ชัดเจน ด้วยสาเหตุดังกล่าวจึงทำให้การแยกบริเวณด้วยวิธีแรกสามารถทำงานได้อย่างมีประสิทธิภาพสูงสุดนอกจากนั้นจะพบว่า ด้วยวิธีการแยกบริเวณวิธีแรกจะทำให้สามารถทราบถึงบริเวณทั้งหมดของวัตถุแต่ละชิ้นซึ่งข้อมูลที่ได้สามารถนำไปคำนวณลักษณะ (Feature) ต่างๆของวัตถุได้ง่ายกว่า

1.Region based segmentation
คือการแยกบริเวณรูปภาพด้วยค่าเทรชโฮลกล่าวคือถ้ามีภาพ Grayscale อยู่ภาพนึงเช่นหรือพูดง่าย ๆก็คือการแปลงภาพ Gray scale เป็นภาพ Binary โดยใช้ค่าเทรชโฮล ซึ่งการเลือกใช้ค่าเทรชโฮลนั้นก็มีอยู่ 2 แบบ

Global Threshold คือ การใช้ค่าเทรชโฮลด์ค่าเดียวกับทั้งภาพ
Local Threshold คือ การแบ่งภาพหลักออกเป็นภาพย่อยๆ ที่แต่ละภาพย่อยเหล่านั้นจะมีค่าเทรชโฮลด์เป็นของตัวเอง

แต่คำถามก็คือค่าเทรชโฮลนั้นจะหาได้อย่างไร?

มีิวิธีการนึงที่เรียกว่า Otsu’s Thresholding method ซึ่งผมก็ไม่รู้ว่าเป็นใครด้วยซ้ำแต่วิธีการของเขานั้นทำให้ได้ค่าเทรชโฮลโดยอัตโนมัติ ซึ่งทฤษฏีไปหาอ่านเอานะครับเดี๋ยวจะยาว ซึ่งในMATLAB นั้นจะมีคำสั่งที่ใช้ในการหาค่าเทรชโฮลด้วยวิธีการของพี่แกอยู่แล้วคือคำสั่ง graythresh('ชื่อรูปภาพ');

ซึ่ง im_gray เป็นภาพ Grayscaleหรือภาพโทนสีเทานะครับ
ดังตัวอย่าง




ผมจึงใช้คำสั่ง th=graythresh(im_gray);
ซึ่งผลลัพท์ที่ได้คือ th=0.4235 ซึ่งไอ้เลข 0.4235 หรือร้อยละ 42.35ถ้าเทียบเป็นความเข้มของสีเทาแล้วจะอยู่ที่ 255x0.4235 = 107.9925 หรือ 108

กล่าวคือถ้าจุดพิกเซลใดมีค่าความเข้มสีเทาต่ำกว่าค่าเทรชโฮลนั้นจะมีค่าเป็น 0 ในภาพ Binary และจุดพิกเซลใดที่มีค่าความเข้มสีเทามากกว่าค่าเทรชโฮลนั้น จะมีค่าเป็น 1 ในภาพ Binary
หลังจากนั้นผมจึงแปลงภาพให้เป็นภาพไบนารี่โดยใช้คำสั่ง

im_bw=im2bw(im_gray,th);

ก็จะได้ภาพดังรูป




ถามว่าการแยกบริเวณแบบนี้มีประโยชน์อย่างไร ในระบบ Machine Vision ในโรงงานอุตสาหกรรมนั้นจะถูกใช้ในการตรวจสอบคุณภาพของ Product เช่นการตรวจสอบอุปกรณ์อิเล็กทรอนิกส์บนแผ่นลายวงจรพิมพ์ จำเป็นต้องแยกบริเวณภาพเพื่อให้เหลือแต่ตัวอักษร พึ่งใช้ในการตรวจสอบว่าอุปกรณ์อิเล็กทรอนิกส์ที่ใส่ลงไปนั้นถูกต้องหรือไม่ อะไรเทือกนี้แหละครับ

คราวหน้ามาต่อนะครับ เมื่อยหล่ะ


Create Date : 19 มกราคม 2554
Last Update : 19 มกราคม 2554 22:24:51 น. 0 comments
Counter : Pageviews.

ชื่อ : * blog นี้ comment ได้เฉพาะสมาชิก
Comment :
  *ส่วน comment ไม่สามารถใช้ javascript และ style sheet
 
jubchay
Location :


[Profile ทั้งหมด]

ให้ทิปเจ้าของ Blog [?]
ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 4 คน [?]




Friends' blogs
[Add jubchay's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.