โมดูลถอดรหัสและต่อภาพความร้อนตู้ควบคุมไฟฟ้า สำหรับทีมซ่อมบำรุงโรงงานอุตสาหกรรมในไทย
ลูกค้า: กลุ่มอุตสาหกรรมการผลิตขนาดใหญ่ในไทย
TIDM (Thermal Image Decoding Module) คือโมดูลซอฟต์แวร์ที่อ่านค่าอุณหภูมิจากไฟล์ภาพของกล้องถ่ายภาพความร้อน FLIR ต่อภาพตู้ควบคุมไฟฟ้าที่ถ่ายทีละส่วนเป็นภาพเดียว และบอกอุณหภูมิสูงสุด–ต่ำสุดของแต่ละช่องกริด เราพัฒนาและส่งมอบโมดูลนี้ให้ทีมซ่อมบำรุงโรงงานอุตสาหกรรมในไทยในปี 2561–2562
- อุตสาหกรรม
- การผลิตทั่วไป
- ปี
- 2561–2562
- ขอบเขตงาน
- รายการส่งมอบ 3 รายการ ได้แก่ โปรแกรมหลักของโมดูล TIDM พร้อมซอร์สโค้ด สำหรับไฟล์ภาพความร้อนจากกล้อง FLIR, เอกสารออกแบบระบบ (ผังระบบ ผังสถานะการทำงาน ผังฐานข้อมูล ผังการไหลของข้อมูล อัลกอริทึม และรายการไลบรารีที่ใช้) และการศึกษาแนวทางและคำแนะนำเพิ่มเติมสำหรับไฟล์จากกล้อง Testo และ InfReC
สรุปสั้น
- TIDM คือโมดูลซอฟต์แวร์ที่อ่านค่าอุณหภูมิจากไฟล์ภาพ .jpg ของกล้อง FLIR ต่อภาพตู้ควบคุมไฟฟ้าที่ถ่ายทีละส่วนเป็นภาพเดียว และบอกอุณหภูมิสูงสุด–ต่ำสุดของแต่ละช่องกริด
- โมดูลมี 2 ส่วน ส่วนถอดรหัสภาพปรับทุกภาพให้ใช้สเกลอุณหภูมิเดียวกัน ส่วนต่อภาพพาโนรามารวมภาพทีละส่วนเป็นภาพเดียวของทั้งตู้
- ในปี 2561–2562 เราส่งมอบงานนี้ครบทั้ง 3 รายการให้ทีมซ่อมบำรุงโรงงานอุตสาหกรรมในไทย คือโปรแกรมพร้อมซอร์สโค้ด เอกสารออกแบบระบบ และการศึกษาแนวทางและคำแนะนำเพิ่มเติมสำหรับไฟล์จากกล้อง Testo และ InfReC
- การต่อภาพพาโนรามาขึ้นกับวิธีถ่ายภาพ ในงานนี้จึงมีการปรับวิธีถ่ายภาพให้เรียงลำดับใหม่
- การทำรายงานรายรอบตรวจ การเทียบผลระหว่างรอบ และการแจ้งเตือน ไม่อยู่ในขอบเขตงานที่ส่งมอบ
โจทย์หน้างาน
ทีมซ่อมบำรุงตรวจตู้ควบคุมไฟฟ้าด้วยกล้องถ่ายภาพความร้อน (Thermal Camera) ที่ลูกค้าจัดหาเอง (FLIR, Testo, InfReC) โดยถ่ายทีละส่วนเรียงเป็นแถวและคอลัมน์ ไฟล์จากกล้องเก็บข้อมูลอุณหภูมิในรูปแบบเฉพาะของผู้ผลิต ทีมต้องการโปรแกรมที่อ่านค่าอุณหภูมิจากไฟล์ ต่อภาพเป็นภาพเดียวของทั้งตู้ และบอกอุณหภูมิสูงสุด–ต่ำสุดของแต่ละส่วน
สิ่งที่เราทำ
เราพัฒนาโมดูล TIDM ด้วยภาษา Python สำหรับไฟล์ภาพ .jpg จากกล้อง FLIR โมดูลมี 2 ส่วน คือส่วนถอดรหัสภาพ (Decoding) ที่อ่านข้อมูลดิบและปรับทุกภาพให้ใช้สเกลอุณหภูมิเดียวกัน และส่วนต่อภาพพาโนรามา (Panorama Stitching) ที่รวมภาพทีละส่วนเป็นภาพเดียวของทั้งตู้ จากนั้นโปรแกรมวาดตารางกริด (Grid) ลงบนภาพ อ่านค่าสูงสุด–ต่ำสุดของแต่ละช่องกริด และเก็บผลลงฐานข้อมูล
ผลลัพธ์
เราส่งมอบงานครบทั้ง 3 รายการตามขอบเขตงาน โดยมีการปรับวิธีถ่ายภาพให้เรียงลำดับใหม่ ผลจากโมดูลคือภาพเดียวของทั้งตู้ และค่าอุณหภูมิสูงสุด–ต่ำสุดของแต่ละช่องกริดที่บันทึกลงฐานข้อมูล
ที่มาของโจทย์
โจทย์ของเคสนี้คือการอ่านค่าอุณหภูมิจากไฟล์ภาพความร้อนของตู้ควบคุมไฟฟ้าด้วยโปรแกรม และดูผลของทั้งตู้ในภาพเดียว ทีมซ่อมบำรุงของลูกค้าใช้กล้องถ่ายภาพความร้อนตรวจตู้ควบคุมไฟฟ้า โดยถ่ายทีละส่วนเรียงเป็นแถวและคอลัมน์ ผลตรวจของตู้หนึ่งตู้จึงเป็นภาพย่อยหลายไฟล์
จุดต่อสายหรืออุปกรณ์ในตู้ไฟฟ้าที่เริ่มมีปัญหามักร้อนกว่าบริเวณรอบข้าง กล้องถ่ายภาพความร้อนช่วยให้เห็นจุดเหล่านี้โดยไม่ต้องสัมผัสอุปกรณ์ ทีมจึงต้องการภาพรวมของทั้งตู้ พร้อมค่าอุณหภูมิสูงสุดและต่ำสุดของแต่ละส่วน
ข้อกำหนดและข้อจำกัด
โมดูลต้องทำงานกับกล้องและไฟล์ที่ลูกค้ามีอยู่ งานนี้ไม่รวมการจัดหากล้อง ข้อกำหนดและข้อจำกัดหลักมีดังนี้
- ลูกค้าจัดหากล้องถ่ายภาพความร้อนเอง ได้แก่ FLIR, Testo และ InfReC
- ไฟล์จากกล้องเก็บข้อมูลอุณหภูมิในรูปแบบเฉพาะของผู้ผลิตแต่ละราย
- โปรแกรมรับไฟล์ภาพ .jpg ของกล้อง FLIR ที่คัดลอกจากการ์ด SD ลงคอมพิวเตอร์
- ผลต้องมีทั้งภาพต้นฉบับและภาพความร้อนของทั้งตู้ ค่าอุณหภูมิสูงสุดและต่ำสุดของแต่ละช่อง และบันทึกลงฐานข้อมูล
- การต่อภาพขึ้นกับวิธีถ่าย: ต้องถ่ายเรียงแถวและคอลัมน์ จุดเริ่มต้นของแต่ละภาพไม่ควรเหลื่อมกันมาก และแสงบริเวณที่ถ่ายควรสว่างสม่ำเสมอ
- การทำรายงานรายรอบตรวจและการเทียบผลระหว่างรอบตรวจไม่อยู่ในขอบเขตงาน
การถอดรหัส (Decoding) ภาพความร้อนคืออะไร
ไฟล์จากกล้องถ่ายภาพความร้อนหลายรุ่นไม่ได้เก็บแค่ภาพสีที่เห็นบนจอ แต่เก็บข้อมูลดิบที่ใช้คำนวณอุณหภูมิของแต่ละจุดไว้ด้วย ในรูปแบบเฉพาะของผู้ผลิตกล้อง การถอดรหัสคือการอ่านข้อมูลส่วนนี้ออกมา เพื่อให้โปรแกรมคำนวณ ต่อภาพ และเก็บค่าอุณหภูมิเองได้
ทำไมต้องถอดรหัสไฟล์ภาพความร้อนก่อนต่อภาพ
ต้องถอดรหัสก่อน เพราะทุกภาพต้องใช้สเกลอุณหภูมิเดียวกันก่อนต่อเป็นภาพเดียว ถ้าแต่ละภาพใช้สเกลของตัวเอง สีเดียวกันในสองภาพอาจหมายถึงอุณหภูมิต่างกัน การปรับสเกลต้องใช้ค่าอุณหภูมิจากข้อมูลดิบในไฟล์ จึงต้องอ่านข้อมูลส่วนนี้ออกมาก่อน
เราจึงแบ่งโมดูล TIDM เป็น 2 ส่วน ส่วนแรกถอดรหัสข้อมูลดิบและปรับทุกภาพให้ใช้สเกลอุณหภูมิเดียวกัน ส่วนที่สองต่อภาพเป็นภาพเดียวของทั้งตู้ เมื่อทุกภาพใช้แถบสีอุณหภูมิเดียวกัน ภาพพาโนรามาของทั้งตู้จึงอ่านได้บนสเกลเดียว
- 1
ถ่ายตู้ทีละส่วนตามลำดับแถวและคอลัมน์
ผู้ตรวจถ่ายภาพความร้อนของตู้ควบคุมไฟฟ้าทีละส่วน เรียงเป็นแถวและคอลัมน์ ลำดับการถ่ายที่ชัดเจนทำให้โปรแกรมรู้ว่าภาพไหนต้องต่อกับภาพไหน
- 2
ถอดรหัสไฟล์ภาพความร้อน
โมดูลอ่านข้อมูลดิบที่กล้อง FLIR เก็บไว้ในไฟล์ .jpg แปลงเป็นภาพสีและภาพขาวดำ (Grayscale) แล้วคำนวณสเกลอุณหภูมิใหม่ ให้ทุกภาพในชุดใช้สเกลอุณหภูมิเดียวกัน
- 3
ต่อภาพเป็นภาพพาโนรามาเดียว
โมดูลต่อภาพแต่ละส่วนเป็นภาพใหญ่ภาพเดียว ได้ทั้งภาพต้นฉบับและภาพความร้อนของทั้งตู้ ผู้ตรวจดูตำแหน่งที่ร้อนกว่าบริเวณรอบข้างได้ในภาพเดียว
- 4
วาดตารางกริดและอ่านค่าอุณหภูมิรายช่องกริด
โปรแกรมวาดตารางกริด (Grid) ลงบนภาพ แล้วอ่านค่าอุณหภูมิสูงสุดและต่ำสุดของแต่ละช่องกริด พร้อมแถบสีอุณหภูมิประกอบภาพ
- 5
เก็บผลลงฐานข้อมูล
ภาพที่ได้และค่าอุณหภูมิของแต่ละภาพถูกบันทึกลงฐานข้อมูล
สิ่งที่ส่งมอบ
เราส่งมอบงานครบทั้ง 3 รายการตามขอบเขตงาน รายการส่งมอบมีดังนี้
- โปรแกรมหลักของโมดูล TIDM พร้อมซอร์สโค้ด เขียนด้วยภาษา Python สำหรับไฟล์ภาพ .jpg จากกล้อง FLIR
- เอกสารออกแบบระบบ: ผังระบบ ผังสถานะการทำงาน ผังฐานข้อมูล ผังการไหลของข้อมูล อัลกอริทึม และรายการไลบรารีที่ใช้
- การศึกษาแนวทางและคำแนะนำเพิ่มเติมสำหรับไฟล์จากกล้อง Testo และ InfReC
ผลที่ยืนยันได้จากการส่งมอบ
ในปี 2561–2562 เราส่งมอบโมดูล TIDM ให้ทีมซ่อมบำรุงโรงงานอุตสาหกรรมในไทยครบทั้ง 3 รายการตามขอบเขตงาน โปรแกรมที่ส่งมอบสร้างผล 2 แบบ แบบแรกคือภาพพาโนรามาของทั้งตู้ ทั้งภาพต้นฉบับและภาพความร้อนที่ใช้แถบสีอุณหภูมิเดียวกัน แบบที่สองคือค่าอุณหภูมิสูงสุดและต่ำสุดของแต่ละช่องกริด ซึ่งบันทึกลงฐานข้อมูลพร้อมภาพ
เคสนี้ไม่มีตัวเลขวัดผลการใช้งาน เช่น จำนวนตู้ที่ตรวจหรือเวลาที่ลดลง เราจึงรายงานเฉพาะสิ่งที่ส่งมอบและยืนยันได้จากเอกสาร โปรแกรมที่ส่งมอบอ่านไฟล์จากกล้อง FLIR ส่วนกล้อง Testo และ InfReC อยู่ในขอบเขตเป็นการศึกษาแนวทางและคำแนะนำเพิ่มเติม ยังไม่ใช่โปรแกรมที่ส่งมอบ
สิ่งที่เราเรียนรู้
งานนี้ให้หลักการ 3 ข้อสำหรับงานอ่านค่าอุณหภูมิจากภาพความร้อน
- วิธีถ่ายภาพเป็นส่วนหนึ่งของระบบ ไม่ใช่แค่ขั้นตอนก่อนใช้โปรแกรม คุณภาพของภาพพาโนรามาขึ้นกับลำดับการถ่ายที่ตกลงไว้ก่อนเริ่มถ่าย
- ค่าอุณหภูมิต้องอยู่บนสเกลเดียวกันก่อนเทียบกัน ภาพจากกล้องต้องถอดรหัสข้อมูลดิบและปรับให้ใช้สเกลอุณหภูมิเดียวกันก่อนต่อภาพหรือเทียบสีระหว่างภาพ
- การรองรับกล้องแต่ละรุ่นต้องยืนยันจากไฟล์จริงของกล้องรุ่นนั้น เพราะรูปแบบไฟล์ต่างกันตามผู้ผลิต การระบุรุ่นกล้องที่โปรแกรมรองรับจึงควรอิงจากไฟล์ที่ทดสอบแล้วเท่านั้น
นำแนวทางนี้ไปใช้กับโรงงานของคุณได้อย่างไร
ถ้าทีมของคุณตรวจตู้ควบคุมไฟฟ้าด้วยกล้องถ่ายภาพความร้อนอยู่แล้ว คุณใช้แนวทางเดียวกับเคสนี้ได้ คือถอดรหัสไฟล์จากกล้อง ปรับทุกภาพให้ใช้สเกลเดียวกัน ต่อภาพเป็นภาพเดียว แล้วอ่านค่ารายช่องเก็บลงฐานข้อมูล ส่วนที่ต้องปรับคือการอ่านไฟล์ เมื่อกล้องของคุณเป็นยี่ห้อหรือรุ่นอื่น
ส่วนที่ใช้ซ้ำได้ และส่วนที่ต้องปรับ
| ส่วนของระบบ | ใช้ซ้ำได้ | ต้องปรับเมื่อ |
|---|---|---|
| การอ่านไฟล์ | การถอดรหัสไฟล์ .jpg จากกล้อง FLIR | กล้องเป็นยี่ห้ออื่นหรือเก็บไฟล์ต่างรูปแบบ ต้องตรวจไฟล์ตัวอย่างจริงก่อน |
| การต่อภาพพาโนรามา | การต่อภาพที่ถ่ายเรียงแถวและคอลัมน์ | วิธีถ่ายไม่มีลำดับแถวและคอลัมน์ที่แน่นอน ต้องกำหนดวิธีถ่ายก่อน |
| การอ่านค่ารายช่องกริด | ตารางกริดและค่าสูงสุด–ต่ำสุดของแต่ละช่องกริด | ต้องการค่าอื่นนอกจากสูงสุดและต่ำสุด ต้องตกลงวิธีคำนวณก่อนพัฒนา |
| การใช้ผลอุณหภูมิ | การบันทึกภาพและค่าอุณหภูมิลงฐานข้อมูล | ต้องการรายงานรายรอบตรวจหรือการแจ้งเตือน ซึ่งไม่อยู่ในขอบเขตเคสนี้ ต้องออกแบบเพิ่ม |
นอกจากเรื่องในตาราง ควรตกลงอีก 2 เรื่องก่อนเริ่มพัฒนา
- ตกลงกรณีทดสอบ (Test Case) และกำหนดส่งไฟล์ตัวอย่างให้ชัดก่อนเริ่มพัฒนา เพื่อให้ทดสอบได้ตามแผน
- ตัดสินใจล่วงหน้าว่าผลอุณหภูมิจะไปใช้ต่อที่ไหน เช่น รายงานรายรอบตรวจ หรือระบบแจ้งเตือน เพื่อออกแบบโครงสร้างฐานข้อมูลให้รองรับ
เริ่มจากชุดภาพของตู้จริงหนึ่งชุด
ชุดภาพความร้อนของตู้จริงที่ถ่ายครบทุกส่วนตามลำดับ คือข้อมูลที่ใช้ทดสอบทั้งการถอดรหัสและการต่อภาพได้เร็วที่สุด
เทคโนโลยีที่ใช้
คำถามที่พบบ่อย
โมดูลนี้อ่านไฟล์จากกล้องยี่ห้อไหนได้บ้าง ต้องซื้อกล้องใหม่หรือไม่
งานที่ส่งมอบรองรับไฟล์ภาพ .jpg จากกล้อง FLIR ที่ลูกค้ามีอยู่แล้ว ไม่ได้รวมการจัดหากล้อง ส่วนกล้อง Testo และ InfReC อยู่ในขอบเขตเป็นการศึกษาแนวทางและคำแนะนำเพิ่มเติม ยังไม่ใช่โปรแกรมที่ส่งมอบ ถ้าคุณใช้กล้องรุ่นหรือยี่ห้ออื่น ต้องส่งไฟล์ตัวอย่างจริงให้เราตรวจก่อน จึงประเมินได้ว่าต้องพัฒนาเพิ่มเท่าไร
ต้องถ่ายภาพอย่างไรให้ต่อภาพพาโนรามาได้
ถ่ายทีละส่วนเรียงตามแถวและคอลัมน์ ให้จุดเริ่มต้นของแต่ละภาพไม่เหลื่อมกันมาก และให้แสงบริเวณที่ถ่ายสว่างสม่ำเสมอ ในเคสนี้มีการปรับวิธีถ่ายภาพให้เรียงลำดับใหม่ด้วย
ได้ซอร์สโค้ดและเอกสารออกแบบระบบด้วยหรือไม่
ได้ งานที่ส่งมอบในเคสนี้รวมซอร์สโค้ดภาษา Python ของโมดูล TIDM และเอกสารออกแบบระบบ ได้แก่ ผังระบบ ผังสถานะการทำงาน ผังฐานข้อมูล ผังการไหลของข้อมูล อัลกอริทึม และรายการไลบรารีที่ใช้
ระบบนี้ทำรายงานหรือแจ้งเตือนเมื่ออุณหภูมิผิดปกติได้ไหม
งานที่ส่งมอบในเคสนี้ยังไม่มีส่วนนี้ โมดูลบันทึกภาพและค่าอุณหภูมิลงฐานข้อมูล ส่วนการทำรายงานรายรอบตรวจ การเทียบผลระหว่างรอบ และการแจ้งเตือน ไม่อยู่ในขอบเขตงาน ถ้าคุณต้องการ ต้องออกแบบโครงสร้างข้อมูลและหน้าจอเพิ่ม
ถ้าต้องการระบบแบบนี้ ราคาเท่าไร
ไม่มีราคามาตรฐาน เพราะขึ้นกับรุ่นกล้อง รูปแบบไฟล์ และสิ่งที่ต้องการทำกับผลอุณหภูมิ ติดต่อเราเพื่อขอใบเสนอราคา เราประเมินจากไฟล์ตัวอย่างและขอบเขตงานจริง




