- 3 ความคิดเห็น
Thresholding
(
เทรสโช ) เป็นวิธีที่ง่ายที่สุดในการทำ image segmentation เพราะว่ามีวิธีการที่ไม่ซับซ้อน
และให้ผลลัพธ์ที่ค่อนข้างดีมาก นิยมใช้ในการทำ image segmentation ของภาพ Grayscale
อีกทั้งใน
emguCV ยังมีฟังค์ชั่นในการทำ thresholding อีกด้วย
ก่อนอื่นเรามาทำความรู้จักกับหลักการของ thresholding กันก่อนนะครับ
หลักการ
จากรูปข้างต้นจะเห็นได้ว่า เมื่อเรากำหนดค่า threshold = 120 แล้วค่า pixel
ในรูปที่มีค่าน้อยกว่า 120 จะถูกปรับค่าเป็น 0
ในทางกลับกันถ้าค่าใน pixel ไหนมากกว่า 120 จะถูกปรับเป็น 255
จะได้สมการดังนี้
เมื่อ f(x,y) คือ ตำแหน่ง pixel ของภาพต้นฉบับ
g(x,y) คือ ตำแหน่ง pixel ของภาพผลลัพธ์
ตัวอย่าง
- ตัวอย่างการคำนวณด้วยมือ เมื่อมีรูปภาพขนาด 10*10 และให้ Threshold value = 120
input image size 10*10 |
output image size 10*10 |
- ตัวอย่างโปรแกรม ในการเขียนโปรแกรมเพื่อใช้ Threshold นั้นมีขั้นตอนอยู่ 3 ขั้นนะครับ
- โหลดภาพ input มาเก็บไว้ในตัวแปร inputImg
capture = new Emgu.CV.Capture("ที่เก็บรูปภาพ");Image<Bgr, Byte> inputImg = capture.QueryFrame(); - แปลงภาพเป็น Grayscale
Image<Gray, Byte> grayImg = inputImg.Convert<Gray, Byte>(); - ใช้ฟังค์ชั่น threshold ใน emguCV ในที่นี้ผมกำหนดค่า threshold = 120 นะครับ
Image<Gray, Byte> outputImg = grayImg.ThresholdBinary(new Gray(120), new Gray(255));
ภาพการทำ threshold ใน emguCV นะครับ |
จบแล้วครับ รบกวนฝากกดไลค์แฟนเพจ labplays ใน facebook ด้วยนะครับบ ^__^
3 ความคิดเห็น
ตรงนี้ไม่เข้าครับ มันเอาไป ใช้ทำอะไร
รบกวนอธิบายอีกหน่อยตั้งแต่รูปแรกเลย อ่านเล้วจินตานาการไม่ออก
เป้าหมายคือ แปลงภาพจาก Gray scal หรือภาพระดับเทา ให้เป็นภาพแบบ Binary หรือ ภาพแบบ ขาวดำ ครับ
อยากรู้ว่า 0 และ 1 เลขไหนแทน สีขาวเลขไหนแทนสีดำครับ
Post a Comment