วันเสาร์ที่ 8 เมษายน พ.ศ. 2560

การใช้ bitwise AND ของภาพ ช่วยลดความละเอียดค่าสีและง่ายต่อการแบ่งส่วนภาพ (Image Segement)

คำสั่ง AND...

Operation bitwise AND สำหรับ ภาพด้วยค่า 0 หรือ 1 ด้วยการกำหนดค่าคงที่ที่อยู่ในรูปแบบเลขฐาน 2 ขึ้นมา

ตัวอย่าง



การเลือกเมนู


ผลลัพธ์




จะสังเกตว่าหาก กำหนดค่าคงที่เป็น 11111111 ภาพจะไม่เกิดการเปลี่ยนแปลง
และหากกำหนดค่าเป็น 00000000 ภาพจะกลายเป็นสีดำ เนื่องจากคุณสมบัติของการ AND กันนั้นแสดงได้ดังนี้

1 AND 0 = 0
1 AND 1 = 1
0 AND 0 = 0
0 AND 1 = 0

เพราะเมื่อ 0 ได้ AND กับค่าใด จะได้ผลลัพธ์เป็น 0 ดังนั้นหาก AND ด้วย 00000000 ค่าสีนั้น (Pixel) ก็จะกลายเป็นสีดำ ส่วน 1 ทั้งหมดเมื่อ AND กับค่าของภาพก็จะไม่เกิดการเปลี่ยนแปลงกับภาพนั่นเอง

การลดค่าสี (Pixel) ด้วยวิธีการหารด้วยค่าคงที่ของทั้งภาพ หรือบางส่วนที่เลือก

คำสั่ง Divide...


เป็นคำสั่งหารค่าในภาพด้วยค่าคงที่ สำหรับภาพแบบ 32-bit นั้นหากหารด้วย 0 จะได้ค่าผลลัพธ์เป็น Infinity หรือ NaN (0/0) หรืออาจจะตั้งค่าผลลัพธ์จากการหารด้วย 0 ใหม่ได้ที่เมนู Edit->Options->Misc..

ตัวอย่าง


การเลือกเมนู


ผลลัพธ์

.


เป็นการลดค่าสีของภาพด้วยการหารค่าคงที่จากตัวอย่างภาพที่ผ่านการประมวลผลแล้วกลุ่มค่าสี (Pixel) จะมีค่าสีเข้าใกล้ค่า 0 มากขึ้น ทำให้ลักษณะภาพโดยรวมแล้วมืดลง

การเพิ่มค่าคงให้ค่าสี (Pixel) ด้วยการคูณค่าคงที่

คำสั่ง Multiply...


เป็นคำสั่งการคูณค่าคงที่ให้กับภาพ หรือส่วนที่เลือก (Selection) สำหรับภาพ 8-bit ผลลัพธ์หากมีค่ามากกว่า 255 จะถูกกำหนดให้มีค่าเป็ฯ 255 และหากเป็นภาพแบบ 16-bit หากค่าผลลัพธ์มากกว่า 65,535 ค่าก็จะถูกกำหนดเป็น 65,535

ภาพตัวอย่าง


การเลือกเมนู


ผลลัพธ์




จากภาพผลลัพธ์จะเป็นการเพิ่มค่าสีที่เข้าใกล้ค่า 255 ด้วยการคูณ ทำให้แม้ตัวคูณน้อย ๆ ก็อาจจะทำให้สีแต่ละค่ามีค่าเข้าใกล้สีขาวมากขึ้นอย่างรวดเร็ว

การลบค่าสี (Pixel) ด้วยค่คงที่ ทั้งภาพ หรือส่วนที่เลือก

คำสั่ง Subtract...

เป็นชุดคำสั่งที่อยู่ในส่วนของ ฟังก์ชันทางคณิตศาสตร์ (Math in ImageJ) เป็นคำสั่งในการลบพิกเซล (pixel) ในภาพด้วยค่าคงที่ที่ต้องการ สำหรับภาพแบบ 8-bit หรือ 16-bit หากค่าน้อยกว่า 0 ค่าจะถูกกำหนดให้เป็น 0

ตัวอย่าง

ภาพเลือกเมนู

ผลลัพธ์




ภาพที่ได้จากการลดค่าสีด้วยค่า 100 จะทำให้ค่าสีของภาพลดลงมาเข้าใกล้ค่าสี 0  ซึ่งจะทำให้ภาพมีความมืดขึ้น

วันพฤหัสบดีที่ 6 เมษายน พ.ศ. 2560

คำสั่งเพิ่มค่าคงที่ให้กับค่า pixel ของภาพ

คำสั่ง Add...


เป็นคำสั่งการบวกค่าคงที่ให้กับภาพ หรือส่วนที่เลือก (Selection) สำหรับภาพ 8-bit ผลลัพธ์หากมีค่ามากกว่า 255 จะถูกกำหนดให้มีค่าเป็ฯ 255 และหากเป็นภาพแบบ 16-bit หากค่าผลลัพธ์มากกว่า 65,535 ค่าก็จะถูกกำหนดเป็น 65,535

ภาพตัวอย่าง

นี้เป็นภาพต้นฉบับที่จำนำมาเพิ่มค่าคงที่




การเลือกเมนู





ผลลัพธ์


สามารถใส่ต้วเลขเป็นได้ทั้งตัวเลขจำนวนเต็มบวก (ใส่เครื่องหมาย + ไว้หน้าตัวเลข) และตัวเลขจำนวนติดลบ (ใส่เครื่องหมาย - ไว้หน้าตัวเลข) ดังตัวอย่างด้านล่าง



และ



ภาพที่ได้เมื่อถูกเพิ่มค่าคงที่ด้วย 100 จะทำให้กลุ่มค่าสี (Pixel) จะเพิ่มมากขึ้นไปทางค่าสีขาว (255)



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

การ Segmentation กลุ่มข้อมูล ด้วยวิธีการ Voronoi with ImageJ

เป็นวิธีการแสดงการแบ่งส่วนของข้อมูลภาพด้วยรูปแบบลายเส้น ที่เกิดจากการวัด และเปรียบเทียบข้อมูลจุดศูนย์กลางของแต่ละกลุ่ม  และขยายพื้นที่ออกไปจนชนขอบของอีกกลุ่มหนึ่ง

ผลลัพธ์ที่เกิดจากขั้นตอนนี้สามารถกำหนดเป็น 8-bit, 16-bit หรือ 32-bit ได้ หรือเขียนทับลงไฟล์เดิมก็ได้ สามารถตั้งค่าได้ที่ Process->Binary->Options...

ตัวอย่าง
เมื่อผ่านขั้นตอนการทำ Voronoi เรียบร้อยแล้ว จะได้ผลลัพธ์ดังนี้



วีดีโอขั้นตอนการประมวลผล




แสดงการประมวลผลด้วยลำดับภาพ ดังนี้




จากขั้นตอนนี้นับว่า Voronoi เป็นวิธีการการ Segment ที่ดีอีกวิธีหนึ่งที่จะนำไปประยุกต์ใช้งานได้อีกหลากหลาย

วันศุกร์ที่ 24 มีนาคม พ.ศ. 2560

การ Segmentation กลุ่มข้อมูล ด้วยวิธีการ Watershed กับ ImageJ


Watershed

เป็นเทคนิคที่ใช้ในการแยกส่วนของภาพออกเป็นส่วน ๆ โดยใช้หลักการวิเคราะห์ เริ่มจากการคำนวณระยะทางด้วย Euclidian distance map (EDM) และหาจุด Ultimate eroded points (UEPs) ซึ่งเป็นจุดกลางของวัตถุแต่ละกลุ่ม เพื่อใช้เป็นจุดเริ่มต้น หรือจุดที่อยู่ศูนย์กลางที่คาดว่าจะเป็นชุดข้อมูลที่มีความแตกต่างกันออกจากกัน หลังจากได้จุดศูนย์กลางของข้อมูลแล้วก็จะหาพื้นที่รอบจุดศูนย์โดยการขยายขนาดออกไปเรื่อย ๆ จนกว่าไปสัมผันกับกลุ่มข้อมูลชุดอื่น ๆ จุดตำแหน่งที่มีการสัมผัสกัน ก็จะเป็นส่วนที่ใช้ในการแบ่งแยกด้วยการสร้างเส้นแบ่งข้อมูลออกเป็นแต่ละกลุ่ม 

ตรวจสอบการตั้งค่าการทำงานในเมนู Edit->Options->Misc... หลังจากนั้นคำสั่งเกี่ยวกับ Watershed จะสามารถแสดงผลการทำงานของอัลกอแบบแอนิเมชั่นได้
จากตัวอย่าง 
ข้อมูลภาพที่ต้องการแยกส่วน




ผลลัพธ์ที่ได้ หลังจากใช้คำสั่ง Watershed ได้ดังนี้


ภาพผลลัพธ์ที่ได้จากมีเส้นสีขาวขีดแบ่งเพื่อแสดงขอบเขตข้อมูลแต่ละกลุ่ม

ขั้นตอนการทำงานที่ละขั้นตอนแสดงด้วยภาพในวีดีโอดังนี้




แสดงในแบบแผนผังภาพได้ดังตัวอย่างด้านล่าง


โดยไล่ลำดับจากภาพซ้ายบนไปขวา  บนลงล่าง