
เหมือนเดิมครับ วันนี้ผมเอาโค้ดจาก http://wonderfl.net มาฝาก แต่คราวนี้เป็นโค้ดที่ผมทดลองเขียนเองดูบ้าง
หากใครเคใช้ BitmapData อาจจะเคยได้เห็น methode ที่ชื่อว่า threshold นะครับ
ผมได้ทดลองปรับภาพจากกล้อง webcam ให้เป็นสีขาวดำจาก ColorMatrixFilter
จากนั้นจึงมาคัดสี ออกเป็นแต่ละระดับของสีเทา (GrayScale) ให้แยกออกจากกันด้วย threshold
แล้วจัดตำแหน่งในแกน 3มิติให้ดูสวยงามขึ้นอีกนิดนึง จนได้ผลตามตัวอย่างโค้ด
สำหรับโค้ดนี้ ผมอยากให้เห็นถึงประโยชน์ของ threshold ที่นำมาใช้กับการทำงานเกี่ยวกับรูปภาพได้หลายด้าน
ทั้งการตรวจจับสี การเคลื่อนไหว รวมถึงแยก level ของสีตามโค้ดที่ผมได้เขียนขึ้น
จะขออธิบายการทำงานของ threshold คร่าวๆตาม document นะครับ
threshold คือการทดสอบพิกเซลของภาพต้นฉบับ
หากว่าทำการ bit mask โดยค่า mask แล้ว เช็คกับตัวดำเนินการ กับค่าสีที่กำหนด
ถ้าหากเช็คผ่านแล้ว จะทำการเปลี่ยนเป็นสี ที่กำหนดไว้อีกที
เช่นหากว่าเราเขียน threshold ดังนี้
threshold( bmp , bmp.rect , new Point() , “>” , 0xFFCCCCCC , 0xFFFF0000 );
โดยอธิบายเป็นโค้ด if ได้ดังนี้
if ( สีของpixel > 0xFFCCCCCC ){
Pixel นี้ จะถูกเปลี่ยนเป็นสี 0xFFFF0000
}
จะเห็นว่าผมได้ใส่ parameter ให้กับ threshold ไม่ครบนะครับ โดยไม่ได้ใส่ค่า mask ลงไปด้วย
หากใครได้คลิกเข้าไปอ่านในเอกสารแล้ว เนื่องจากว่า ถ้าจะอธิบาย ต้องพูดถึงการคำนวนระดับ bit ด้วย
ไว้คราวหน้า ผมจะหยิบเอาเทคนิคการทำงานกับข้อมูลระดับ bit และเทคนิคเบื้องต้นมาฝากนะครับ
แล้วก็อาจจะใช้ ByteArray ให้เห็นภาพกันด้วย
อ้อ ด้านล่างนี้เป็นตัวอย่างโค้ดจาก Wonderfl นะครับ
