lamborghini

lamborghini

วันพุธที่ 8 สิงหาคม พ.ศ. 2555

Image processing เทคโนโลยีการประมวลผลภาพ


Image processing เทคโนโลยีการประมวลผลภาพ

การประมวลผลภาพ (Image Processing) หมายถึง การนำภาพมาประมวลผลหรือคิดคำนวณด้วยคอมพิวเตอร์ เพื่อให้ได้ข้อมูลที่เราต้องการทั้งในเชิงคุณภาพและปริมาณ

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


การประชุมทางไกลผ่านระบบเทเลคอนเฟอเรน ใช้เทคนิคการบีบอัดภาพ


การตรวจลายนิ้วมือโดยใช้ ระบบสแกนลายนิ้วมือ

ภาพถ่ายดาวเทียมใช้หลักการของการประมวลผลภาพ


งานทางหุ่นยนต์ ใช้ในการออกแบบหุ่นยนต์กู้ภัยค้นหาผู้บาดเจ็บหรือเสียชีวิตจากอุบัติเหตุ
นอกจากตัวอย่างระบบต่าง ๆ ดังกล่าวข้างต้นแล้ว งานที่สำคัญอีกอย่างหนึ่ง ซึ่งเกี่ยวข้องกับชีวิตและสุขภาพเราอย่างมาก คือ งานวิเคราะห์ภาพทางการแพทย์ ก็จำเป็นต้องนำศาสตร์ทางด้านการประมวลผลภาพมาประยุกต์ใช้เช่นกัน เพื่อเพิ่มประสิทธิภาพการทำงานของแพทย์ผู้เชี่ยวชาญในการวินิจฉัยโรคต่าง ๆ หรือตรวจหาความผิดปกติของอวัยวะต่าง ๆ ในร่างกายของผู้ป่วยได้รวดเร็วยิ่งขึ้นและมีประสิทธิภาพมากขึ้นตัวอย่างการนำภาพถ่ายมาทำการวิเคราะห์ ใช้หลักการของการประมวลผลภาพให้ภาพคมชัดมากยิ่งขึ้นในการหาเชื้อแบตทีเรีย
ในปัจจุบัน เทคนิคการถ่ายภาพทางการแพทย์ ซึ่งทำให้แพทย์สามารถตรวจดูอวัยวะสำคัญ ๆ ต่าง ๆ ภายในร่างกายได้โดยไม่จำเป็นต้องผ่าตัด ได้พัฒนาไปไกลมาก เริ่มจากเครื่องเอ็กซเรย์ (X-Ray) ซึ่งสามารถถ่ายภาพโครงสร้างกระดูกและอวัยวะบางอย่างเช่น ปอด ภายในร่างกายได้ ต่อมาได้มีการพัฒนาสร้างเครื่อง CT (Computed Tomography) ซึ่งสามารถจับภาพอวัยวะต่าง ๆ ในแนวระนาบตัดขวางได้ ทำให้เราเห็นข้อมูลภาพได้มากขึ้น


การใช้เครื่อง CT สแกนเพื่อตรวจหาความผิดปกติของมะเร็งเต้านม


อีกทั้งยังมีเครื่อง MRI (Magnetic Resonance Imaging) ซึ่งใช้ถ่ายภาพส่วนที่เป็นเนื้อเยื้อที่ไม่ใช่กระดูก (soft tissues) ได้ดี ภาพ MRI นี้นอกจากจะให้ข้อมูลทางกายภาพแล้วยังให้ข้อมูลทางเคมีได้อีกด้วย เครื่อง MRI ยังสามารถถ่ายภาพอวัยวะที่ต้องการในระนาบต่าง ๆ ได้ด้วย โดยไม่จำเป็นต้องเคลื่อนย้ายตำแหน่งของผู้ป่วย

หรือแม้กระทั่ง เทคนิคการถ่ายภาพด้วยอัลตราซาวด์ (Ultrasound) ซึ่งใช้ตรวจดูความสมบูรณ์ของทารกในครรภ์มารดา หรือตรวจดูขนาดของ ตับ ม้าม ถุงน้ำดี และ ไต เพื่อหาความผิดปกติของอวัยวะเหล่านี้ ในปัจจุบันก็ยังมีใช้กันอย่างแพร่หลาย ด้วยเทคนิคใหม่ ๆ ในการถ่ายภาพทางการแพทย์เหล่านี้ บวกกับเทคโนโลยีที่ก้าวหน้าขึ้น ซึ่งเพิ่มความสะดวกรวดเร็วในการใช้งานเครื่องถ่ายภาพเหล่านี้ ทำให้มีการถ่ายภาพทางการแพทย์เพื่อเป็นแนวทางในการวินิจฉัยโรคต่าง ๆ กันอย่างแพร่หลาย นั้นหมายความว่า ปัจจุบันมีภาพทางการแพทย์ที่จำเป็นต้องนำมาประมวลผลเป็นจำนวนมหาศาล ซึ่งอาจจะเกินกำลังที่จะให้บุคลากรทางการแพทย์แต่ละคนมาวิเคราะห์ได้ในแต่ละวัน จึงมีความจำเป็นต้องนำเทคโนโลยีทางการประมวลผลภาพเข้าช่วย เนื่องจากภาพทางการแพทย์ต่าง ๆ เหล่านี้ ปัจจุบันได้ถูกพัฒนาให้สามารถเก็บอยู่ในรูปแบบดิจิทัลได้แล้ว ทำให้สะดวกในการจัดเก็บ รักษา และส่งข้อมูลภาพ และที่สำคัญเรายังสามารถวิเคราะห์ภาพเหล่านี้ได้ด้วยคอมพิวเตอร์ ซึ่งเป็นการเพิ่มประสิทธิภาพในการวินิจฉัยโรคได้รวดเร็วยิ่งขึ้น อีกทั้งในการถ่ายภาพเพื่อตรวจดูการทำงาน หรือตรวจหาความผิดปกติของอวัยวะหนึ่ง ๆ นั้นในแต่ละครั้งนั้น อาจต้องใช้ภาพจำนวนมากในการเปรียบเทียบวิเคราะห์ เช่น การถ่ายภาพหัวใจด้วยเครื่อง MRI จำเป็นต้องถ่ายภาพตลอดระยะเวลาการเต้นของหัวใจในช่วงระยะเวลาหนึ่ง ซึ่งอาจได้ภาพออกมาเป็นจำนวนร้อย ๆ ภาพ เป็นต้น ดังนั้น ในการทำงานของแพทย์ผู้เชี่ยวชาญกับภาพถ่ายจำนวนมากเหล่านี้ จึงทำให้ต้องเสียเวลาและใช้แรงงานของแพทย์ผู้เชี่ยวชาญอย่างมากเกินจำเป็น อีกทั้งผู้เชี่ยวชาญเองอาจเกิดอาการล้าได้ หากจำเป็นต้องวิเคราะห์ภาพเป็นเวลาติดต่อกันเป็นเวลานาน ๆ ด้วยเหตุนี้เอง จึงได้มีการนำการประมวลผลภาพด้วยคอมพิวเตอร์เข้ามาช่วยในการวิเคราะห์ภาพทางการแพทย์ ซึ่งถือเป็นศาสตร์ใหม่ เรียกว่า การประมวลผลภาพทางการแพทย์ (Medical Image Processing) เพื่อให้แพทย์ผู้เชี่ยวชาญสามารถวิเคราะห์ภาพจำนวนมากได้อย่างรวดเร็ว และเป็นการเพิ่มประสิทธิภาพในการวินิจฉัยโรคได้ดีขึ้นด้วย


การประมวลผลภาพทางการแพทย์ เป็นการนำเทคนิคหรือวิธีการต่าง ๆ ของการประมวลผลภาพ มาใช้กับภาพทางการแพทย์ โดยการเลือกใช้เทคนิคต่าง ๆ กับภาพทางการแพทย์นี้ จะขึ้นอยู่กับเป้าหมายหรือวัตถุประสงค์ของการวิเคราะห์ภาพทางการแพทย์นั้น ๆ เพื่อให้ได้ผลลัพท์ ที่ช่วยให้แพทย์สามารถวิเคราะห์ภาพเหล่านั้นได้สะดวกและรวดเร็วมากขึ้น โดยเทคนิคของการประมวลผลภาพมีมากมายหลายวิธีการ ซึ่งส่วนใหญ่แล้ว ในการวิเคราะห์ภาพทางการแพทย์มักจะใช้หลาย ๆ วิธีการร่วมกัน เพื่อให้ได้สิ่งที่ต้องการตามเป้าหมายหรือวัตถุประสงค์ของการวิเคราะห์ภาพทางการแพทย์นั้น ๆ เทคนิคของการประมวลผลภาพที่สำคัญ ๆ ในการจัดการกับภาพทางการแพทย์ มีดังตัวอย่างต่อไปนี้
การแบ่งส่วนภาพ (Image Segmentation) เป็นวิธีการแบ่งส่วนใดส่วนหนึ่งของภาพที่เราสนใจออกมาจากภาพที่เราต้องการ ซึ่งการแบ่งส่วนภาพนี้ โดยส่วนใหญ่แล้วจะเป็นขั้นตอนเบื้องต้นและสำคัญอย่างมากของการประมวลผลภาพทางการแพทย์ เนื่องจากภาพทางการแพทย์ที่ได้จากเครื่องถ่ายภาพแบบต่าง ๆ นั้น โดยปกติมักจะมีองค์ประกอบอื่น ๆ ที่อยู่ใกล้เคียงกับอวัยวะที่ทำถ่ายภาพมา เช่น เนื้อเยื่อ กระดูก อวัยวะข้างเคียง หรือแม้กระทั่งสัญญาณรบกวน (Noise) ที่ขึ้นในขณะถ่ายภาพ ด้วยเหตุนี้ การวิเคราะห์เฉพาะอวัยวะที่ต้องการ จึงจำเป็นต้องใช้การแบ่งส่วนภาพมาทำหน้าที่ตัดแยกส่วนที่เราต้องการออกมา ตัวอย่างเช่น การแบ่งส่วนเนื้อสมองจากภาพสมอง การแบ่งส่วนภาพหัวใจห้องล่างซ้ายจากภาพหัวใจ MRI การแบ่งส่วนเฉพาะเส้นโลหิต การแบ่งส่วนข้อกระดูกสันหลังจากภาพลำกระดูกสันหลัง หรือ การแบ่งส่วนของทารกจากภาพอัลตราซาวด์ เป็นต้น การแบ่งส่วนภาพทางการแพทย์มีทั้งการแบ่งส่วนภาพแบบ 2 มิติ และ 3 มิติ ขึ้นอยู่ความจำเป็นและวัตถุประสงค์ของการนำไปวิเคราะห์ โดยวิธีการแบ่งส่วนภาพที่กำลังได้รับความนิยมในงานวิจัยเกี่ยวกับภาพทางการแพทย์ ได้แก่ แอ็กทิฟคอนทัวร์ (Active Contour) และ แอ็กทิฟเซอร์เฟส (Active Surface) เป็นต้น
การซ้อนทับภาพ (Image Registration)
เป็นวิธีการนำข้อมูลของสองภาพหรือมากกว่า มารวมกันเพื่อให้เกิดภาพใหม่ที่มีข้อมูลภาพสมบูรณ์มากขึ้น โดยภาพใหม่ที่ได้นี้ จะเป็นการรวมตัวกันของข้อมูลหรือรายละเอียดในแต่ละภาพที่นำมาผสานกัน มีวัตถุประสงค์เพื่อให้ได้ภาพที่มีรายละเอียดและข้อมูลที่เพียงพอสำหรับการนำไปใช้งาน หรือการนำภาพไปวิเคราะห์ โดยส่วนใหญ่แล้วภาพที่จะนำมาซ้อนทับกันนั้น อาจเป็นภาพถ่ายของอวัยวะเดียวกัน ที่ถ่ายต่างเวลากัน ต่างมุมมองกัน หรือ ใช้เทคนิคในการถ่ายภาพที่แตกต่างกัน เป็นต้น และการนำวิธีการซ้อนทับภาพมาใช้กับภาพทางการแพทย์ มีประโยชน์ในหลาย ๆ ด้าน ตัวอย่างเช่น การตรวจ ติดตาม หรือหาความผิดปกติของอวัยวะต่าง ๆ ทำได้โดยการนำภาพถ่ายของอวัยวะที่ต้องการตรวจ ที่ได้ถ่ายไว้ในอดีต มาทำการซ้อนทับกับภาพถ่ายของอวัยวะเดียวกันที่ถ่ายไว้ในปัจจุบัน โดยทำให้ตำแหน่งของอวัยวะต่าง ๆ ของทั้งสองภาพตรงกัน ซึ่งการทำในลักษณะนี้ จะทำให้เห็นถึงความเปลี่ยนแปลงที่เกิดขึ้นของอวัยวะนั้น ว่ามีการเปลี่ยนแปลงไปอย่างไรบ้างในช่วงเวลานั้น มีแนวโน้มที่จะเป็นอย่างไรต่อไป มีสิ่งผิดปกติเกิดขึ้นหรือไม่ มีอวัยวะที่โตขึ้นผิดปกติหรือไม่ เป็นต้น การนำภาพทางการแพทย์ที่ใช้เทคนิคในการถ่ายภาพแตกต่างกัน มาทำการซ้อนทับภาพ เป็นอีกหนึ่งประโยชน์ของวิธีการนี้ เนื่องจากภาพทางการแพทย์ที่ถ่ายโดยใช้เทคนิคการถ่ายภาพเพียงแบบเดียว อาจจะทำให้ได้ข้อมูลไม่ครบถ้วนตามที่ต้องการ จึงจำเป็นต้องใช้เทคนิคการถ่ายภาพหลาย ๆ แบบ เพื่อให้ได้ข้อมูล รายละเอียดของอวัยวะ หรือองค์ประกอบรอบข้างอื่น ๆ ของอวัยวะนั้น ๆ เพิ่มมากขึ้น ซึ่งจะเป็นประโยชน์อย่างมากในการนำภาพไปวิเคราะห์ ตัวอย่างเช่น การนำภาพสมองที่ถ่ายด้วยเครื่อง CT ซึ่งมีรายละเอียดที่ชัดเจนโดยเฉพาะอย่างยิ่งในส่วนที่เป็นกระดูก มาซ้อนทับกับภาพสมองที่ถ่ายด้วยเครื่อง MRI ซึ่งให้รายละเอียดของเนื้อเยื่อต่าง ๆ ภายในสมองได้ดีกว่าภาพที่ถ่ายด้วยเครื่อง CT และเห็นได้ว่า ภาพใหม่ที่ได้จากการซ้อนทับของข้อมูลจากภาพทั้งสองนี้ จะมีรายละเอียดขององค์ประกอบต่าง ๆ เพิ่มมากขึ้น คือ มีทั้งส่วนที่เป็นกะโหลกศีรษะและรายละเอียดของเนื้อเยื่อต่าง ๆ ในสมอง จึงทำให้สามารถวิเคราะห์ภาพใหม่นี้เพียงภาพเดียวได้ โดยไม่ต้องพิจารณาภาพทั้งสองแยกกัน

การสร้างภาพ 3 มิติ (3D Image Reconstruction)
การวิเคราะห์ภาพทางการแพทย์โดยใช้ภาพ 3 มิติ กำลังได้รับความต้องการอย่างมากในปัจจุบัน เนื่องจากภาพ 3 มิติ สามารถแสดงให้เห็นถึงภาพรวมหรือรายละเอียดในมุมมองต่าง ๆ ของอวัยวะได้ จึงมีประโยชน์อย่างมากในการวิเคราะห์ภาพทางการแพทย์ โดยอวัยวะหรือส่วนของร่างกายที่ได้มีการวิเคราะห์ในรูปแบบ 3 มิติ ตัวอย่างเช่น สมอง หัวใจ กระดูก ฟัน และขากรรไกร เป็นต้น
ภาพ 3 มิติสำหรับภาพทางการแพทย์นั้น มักสร้างมาจากภาพ 2 มิติหลาย ๆ ภาพ ทำได้โดยการนำภาพเหล่านั้น มาผ่านกระบวนการประมวลผลภาพ เช่น การแบ่งส่วนภาพ เป็นต้น เพื่อให้ได้รายละเอียด ส่วนประกอบต่าง ๆ หรือข้อมูลที่จำเป็นของอวัยวะที่ต้องการ จากนั้น นำมาประกอบกันเพื่อขึ้นรูปเป็นภาพ 3 มิติ ซึ่งภาพ 3 มิติที่ได้นี้ จะมีลักษณะหรือรูปร่างที่เหมือนกับอวัยวะจริงเพียงใด ขึ้นอยู่กับข้อมูลของภาพ 2 มิติที่นำมาประมวลผล ถ้าภาพ 2 มิติที่ได้จากเครื่องถ่ายภาพมีภาพจำนวนมากเพียงพอ ถ่ายในทุกส่วนสัดอย่างละเอียด หรือ ได้ถ่ายไว้ในหลายมุมมอง ก็ยิ่งทำให้ภาพ 3 มิติที่ได้ใกล้เคียงกับความเป็นจริงมากขึ้น

ข้อดีของภาพ 3 มิติ คือ สามารถพิจารณาในลักษณะของปริมาตรหรือขนาดได้ ทำให้สามารถตรวจหาความผิดปกติของอวัยวะได้ โดยดูจากขนาดที่เห็น หรือดูจากค่าที่คำนวณออกมาเป็นตัวเลข เช่น ปริมาตร หรือค่าความบ่งชี้ต่าง ๆ ทางการแพทย์ เป็นต้น เพื่อใช้เป็นข้อมูลในการวิเคราะห์ว่าอวัยวะนั้น ๆ มีขนาดที่ใหญ่หรือเล็กผิดปกติหรือไม่ ตัวอย่างการนำภาพ 3 มิติมาช่วยงานในด้านการวางแผนการรักษา เช่น การวางแผนการฝังรากฟันเทียม ทำได้โดยการจัดการวางแผนกับภาพฟัน 3 มิติในคอมพิวเตอร์ ที่สร้างมาจากภาพฟันและขากรรไกร 2 มิติของผู้ป่วย หรือการวางแผนการจัดฟัน ที่ทำให้ผู้ป่วยสามารถเห็นลักษณะฟันของตนเอง ก่อนและหลังการจัดฟันได้ เพื่อเป็นตัวช่วยในการตัดสินใจว่าจะเข้ารับการรักษาหรือไม่ และ ในด้านการวางแผนการผ่าตัดฝังวัสดุในส่วนใดส่วนหนึ่งของร่างกาย จะช่วยให้แพทย์สามารถวางแผนและจัดการฝังวัสดุได้อย่างมีความถูกต้อง แม่นยำ และมีประสิทธิภาพมากขึ้น ทั้งนี้ การประมวลผลภาพทางการแพทย์ ไม่ได้มีจุดประสงค์เพื่อเข้ามาทำหน้าที่หลักแทนแพทย์ผู้เชี่ยวชาญ แต่เข้ามาทำหน้าที่เป็นเครื่องมืออำนวยความสะดวกหรือเป็นผู้ช่วยในการวิเคราะห์ภาพทางการแพทย์ต่าง ๆ เพื่อให้แพทย์สามารถวิเคราะห์ภาพเหล่านั้นได้สะดวกและ รวดเร็วขึ้น และเพิ่มประสิทธิภาพในวิเคราะห์ให้ดีขึ้น ปัจจุบันยังมีความจำเป็นและต้องการผู้รู้ ผู้เชี่ยวชาญในการพัฒนาเทคนิคการประมวลผลภาพทางการแพทย์อีกมาก ทั้งนี้ ผู้ที่พัฒนากระบวนการประมวลผลภาพทางการแพทย์นี้ นอกจากจะต้องรู้วิธีการสั่งงานคอมพิวเตอร์ได้แล้ว ยังต้องเข้าใจความสามารถในการวิเคราะห์ภาพของแพทย์ผู้เชี่ยวชาญในงานนั้น ๆ อีกด้วย เพื่อจะสามารถผสมผสานศาสตร์ทั้งสองนั้น และนำมาพัฒนาศักยภาพในการประมวลผลภาพได้สูงขึ้น

ตัวอย่างการนำการประมวลผลสัญญาณดิจิตอลไปใช้งานด้านต่างๆ


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

เอกสารอ้างอิง
1. http://ce.thainichi.net/index.php/articles/technology-reviews/51-image-processing-
http://www.tedmontgomery.com/the_eye/
http://www.codeproject.com/KB/GDI-plus/csharpfilters.aspx
4. http://www.eegrad.mut.ac.th/home/peerapol/article.htm
5. Denise Chiavetta, Top 12 Areas for Technology Innovation through 2025, Changer Waves, November
20, 2007, available online at changewaves.socialtechnologies.com/home/2007/11/20/top-12-areas-for-
technology-innovation-through-2025.html

วันอังคารที่ 7 สิงหาคม พ.ศ. 2555

MATLAB

MATLAB คืออะไร 
MATLAB เป็นภาษาคอมพิวเตอร์ชั้นสูง (High-level Language) สำหรับการคำนวณทางเทคนิคที่ประกอบด้วยการคำนวณเชิงตัวเลข กราฟิกที่ซับซ้อน และการจำลองแบบเพื่อให้มองเห็นภาพพจน์ได้ง่ายและชัดเจนชื่อของ MATLAB ย่อมาจาก matrix laboratory เดิมโปรแกรม MATLAB ได้เขียนขึ้นเพื่อใช้ในการคำนวณทาง matrix หรือเป็น matrix software ที่พัฒนาจากโพรเจ็กที่ชื่อ LINKPACK และ EISPACK

MATLAB ได้พัฒนามาด้วยการแก้ปัญหาที่ส่งมาจากหลายๆ ผู้ใช้เป็นระยะเวลาหลายปีจึงทำให้โปรแกรม MATLAB มีฟังก์ชันต่างๆ ให้เลือกใช้มากมาย ในบางมหาวิทยาลัยได้ใช้โปรแกรม MATLAB เป็นหลักสูตรพื้นฐานในการศึกษาทางด้วนคณิตศาสตร์ วิศวกรรม และวิทยาศาสตร์แขนงต่างตลอดจนใจด้วนอุตสาหกรรมได้ใช้โปรแกรม MATLAB เป็นเครื่องมือสำหรับใช้ในงานวิจัย พัฒนาและวิเคราะห์

โปรแกรม MATLAB จะมีกล่องเครื่องมือที่ใช้ในการหาคำตอบเรียกว่า Toolbox โดยโปรแกรม MATLAB จะมี toolbox ในแต่ละสาขา เช่น การประมวลผลสัญญาณ (Signal processing toolbox) การประมวลผลภาพ (image processing toolbox) ระบบควบคุม (control system toolbox) โครงข่ายประสาท (neural networks toolbox) ฟัซซี่ลอจิก (fuzzy logic toolbox) เวฟเลท (wavelet toolbox) การติดต่อสื่อสาร (communication toolbox) สถิติ (Statistics toolbox) และสาขาอื่นๆ มากมาย ภายใน toolbox แต่ละสาขาก็จะมีฟังก์ชันต่างๆ ที่เกี่ยวข้องกับการแก้ปัญหาในสาขานั้นๆ ให้เลือกประยุกต์ใช้งานเป็นจำนวนมาก 


โครงสร้างของ MATLAB

โครงสร้างของโปรแกรม MATLAB ประกอบด้วย 5 ส่วนใหญ่ คือ

  1. ภาษาโปรแกรม MATLAB (The MATLAB language)
    MATLAB เป็นโปรแกรมภาษาชั้นสูงที่ใช้ควบคุม flow statement ฟังก์ชัน โครงสร้างข้อมูลอินพุท/เอาท์พุท และลักษณะโปรแกรม Object-Oriented Programming ทำให้การเขียนโปรแกรมไม่ยุ่งยากเมื่อเทียบกับการเขียนโปรแกรมด้วยภาษาอื่นๆ เช่น C, Fortran, Basic เป็นต้น
  2. สถาปัตยกรรมในการทำงานของ MATLAB (The MATLAB working environment)
    MATLAB จะมีกลุ่มของเครื่องมือที่เป็นประโยชน์สำหรับการทำงานของผู้ใช้โปรแกรม หรือโปรแกรมเมอร์ประโยชน์ที่กล่าวนี้ก็คือการจัดการตัวแปรใน workspace การนำข้อมูลหรือการผ่านค่าตัวแปรเข้า/ออกและกลุ่มของเครื่องมือต่างๆ นี้ก็จะใช้สำหรับพัฒนา จัดการ ตรวจสอบความผิดพลาดของโปรแกรม (debugging) ที่ได้เขียนขึ้น
  3. ฟังก์ชันในการคำนวณทางคณิตศาสตร์ (The MATLAB mathematical function library)
    MATLAB จะมีไลบรารีทั่วไปที่ใช้ในการคำนวณอย่างกว้าง เช่น sine, cosine และพีชคณิตเชิงซ้อนโดยสามารถนำไปประยุกต์ใช้เป็นฟังก์ชันหรือไลบรารีเพิ่มเติมขึ้นจากไลบรารีที่ใช้กันโดยทั่วไป เช่น ฟังก์ชันในการหา eigenvalues และ eigenvectors การแยกตัวประกอบและส่วนประกอบของเมตริกซ์ด้วยวิธีต่างๆ การวิเคราะห์ข้อมูล การหาความน่าจะเป็น และการแก้ปัญหาระบบของสมการเชิงเส้นที่เป็นพื้นฐานของสาขาวิชาต่างๆ เป็นต้น ทำให้โปรแกรม MATLAB มีฟังก์ชันสำหรับใช้งานค่อนข้างมากและครอบคลุมในรายละเอียดของการคำนวณสาขาต่างๆ ได้มากขึ้น
  4. Handle Graphics
    ระบบกราฟิกของ MATLAB จะประกอบด้วยคำสั่งชั้นสูงสำหรับการพล็อตกราฟโดยมีพื้นฐานอยู่บนแนวความคิดที่ว่าทุกๆ สิ่งบนหน้าต่างรูปภาพของโปรแกรม MATLAB จะเป็นวัตถุ (Object) ซึ่งมีเอกลักษณ์เฉพาะตัว Handle Graphics ประกอบด้วยคำสั่งชั้นสูงให้คุณได้เลือกใช้ในการสร้าง Graphic User Interface บนพื้นฐานการประยุกต์ใช้งานของคุณ นอกจากนี้โปรแกรม MATLAB ยังมีฟังก์ชันที่ใช้สำหรับการแสดงภาพสองมิติ ภาพสามมิติ และการสร้างภาพเคลื่อนไหว
  5. The MATLAB Application Program Interface (API)
    API จะใช้เพื่อสนับสนุนการติดต่อจากภายนอกโดยใช้โปรแกรมที่เป็น mex ไฟล์ซึ่งเป็นไฟล์ซึ่งเป็นไฟล์ที่เขียนขึ้นโดยใช้ mex ฟังก์ชันใน MATLAB ซึ่งจะเรียกใช้รูทีนจากโปรแกรมภาษา C และ Fortran หรืออาจกล่าวได้ว่า API เป็นไลบรารีที่เขียนด้วยโปรแกรมภาษา C และ Fortran ที่มีการเชื่อมต่อกับโปรแกรม MATLAB ด้วยไฟล์ที่เป็น mex ฟังก์ชันอีกทั้ง MATLAB API นี้ยังมีความสามารถสำหรับการเรียก routine จาก MATLAB (dynamic linking) ก็ได้
นอกจากลักษณะเด่นของโปรแกรม MATLAB ทั้ง 5 ข้อที่ได้กล่าวมาข้างต้นแล้วโปรแกรม MATLAB ยังมีเครื่องมือที่ใช้สำหรับการวิเคราะห์และทดสอบระบบโดยการจำลองขึ้นมาซึ่งก็คือ Simulink

Simulink เป็นโปรแกรมที่ควบคู่กับ MATLAB ซึ่งเป็นระบบ Interactive สำหรับการจำลองและวิเคราะห์ระบบไดนามิกต่างๆ ที่เป็นระบบเชิงเส้น (Linear) ระบบไม่เชิงเส้น (nonlinear) Simulink เป็นโปรแกรม mouse-driver ที่ให้คุณใช้ระบบโมเดลโดยการวาดบล็อกไดละแกรมบนจอภาพด้วยการใช้เมาส์ทำให้โปรแกรม MATLAB สามารถทำการจำลองระบบได้หลายรูปแบบ น เชิงเส้น (linear) ไม่เชิงเส้น (nonlinear) เวลาต่อเนื่อง (continuous-times) เวลาไม่ต่อเนื่อง (discrete-time) และระบบเหลายอัตรา (multirate) ซึ่งแต่ละรูปแบบที่นำมาสร้างแบบจำลองในการวิเคราะห์นี้ผู้ใช้จะต้องมีความเข้าใจพื้นฐานการทำงานของบล็อกแต่ละบล็อกได้เป็นอย่างดี ตลอดจนเข้าใจระบบโดยรวมของงานที่จะกระทำด้วย

Blocksets เป็นสิ่งที่เพิ่มเติมใน Simulink โดยจะเป็นไลบรารีของบล็อกสำหรับการประยุกต์เฉพาะ เช่น การติดต่อสื่อสาร (Communications) การประมวลผลข้อมูล (Signal processing) และระบบไฟฟ้ากำลัง (power systems)
Real-time Workshop เป็นโปรแกรมที่ให้คุณสร้าง c code จากบ็อกไดอะแกรมของคุณและสามารถกระทำกับบล็อกไดอะแกรมได้หลากหลายด้วยระบบเวลาจริง (real-time systems)

โปรแกรม MATLAB มีอยู่หลาย version ซึ่ง version ดั้งเดิมของโปรแกรม MATLAB จะใช้งานบน DOS ที่มีการคำนวณไม่ยุ่งยากเหมาะสำหรับผู้เริ่มศึกษา คอมพิวเตอร์ที่ใช้ก็ไม่จำเป็นต้องมีพื้นที่หน่วยความจำมาก ใช้ได้กับ CPU ที่มีความเร็วต่ำ แต่มีข้อเสียคือฟังก์ชันที่นำมาใช้งานมีน้อยทำให้เขียนโปรแกรมที่มีความซับซ้อนได้ไม่ดีเท่าที่ควรเพราะมีประสิทธิภาพและความเร็วในการประมวลผลต่ำ ต่อมาเมื่อระบบเลือกใช้ได้มากมายจึงทำให้โปรแกรม MATLAB มีประสิทธิภาพและมีความสามารถในการประมวลผลที่เร็วขึ้น version ใหม่ที่ได้ทำการปรับปรุงใหม่ให้ดีขึ้นนี้จะใช้งานบน Windows ทำให้ผู้ใช้มีความสะดวกในการใช้งานมากขึ้น ข้อดีของ version ใหม่นี้คือมีประสิทธิภาพที่ดีขึ้น การประมวลผลโปรแกรมที่ซับซ้อนมีความเร็วสูงขึ้น และมีฟังก์ชันต่างๆ ให้เลือกใช้ในการสาขาต่างๆ มากมาย แต่ก็ต้องใช้กับคอมพิวเตอร์ที่มีพื้นที่หน่วยความจำมาก CPU มีความเร็วสูง และต้องการ Co-processor ในการช่วยคำนวณแต่เมื่อเปรียบเทียบกับผลดีที่ได้ก็ถือว่าคุ้ม 


คอมพิวเตอร์ที่เหมาะสมสำหรับโปรแกรม MATLAB
เนื่องจากโปรแกรม MATLAB เป็นโปรแกรมที่ใช้สำหรับการคำนวณทางคณิตศาสตร์และกราฟิกที่ซับซ้อนดังนั้นจึงจำเป็นต้องใช้เครื่องคอมพิวเตอร์ที่มีความเร็วสูง คอมพิวเตอร์พีซีที่เหมาะสมกับโปรแกรม MATLAB คือ มีซีพียูรุ่นเพนเทืยมขึ้นไป แรมควรมีอย่างต่ำ 32 เมกกะไบต์ ส่วนฮาร์ดดิสก์ควรมีเนื้อที่ว่างเกินกว่า 80 เมกกะไบต์ขึ้นไป


โปรแกรม MATLAB ดีอย่างไร
สำหรับผู้ที่ยังไม่เคยใช้งานโปรแกรม MATLAB อาจสงสัยว่าโปรแกรม MATLAB มีข้อดีอย่างไร ทำไมถึงไม่ใช้งานภาษาโปรแกรมอื่นๆ และแตกต่างจากโปรแกรมภาษาอื่นๆ อย่างไร ดังนั้นในหัวข้อนี้จึงได้จำแนกลักษณะเด่นที่ง่ายต่อการใช้งานของโปรแกรม MATLAB ดังนี้ คือ

  • มีฟังก์ชันคณิตศาสตร์ให้เลือกใช้ในการคำนวณมากมายตลอดจนเราสามารถสร้างฟังก์ชันขึ้นมาใช้งานได้เองในสาขาที่ต้องการ โดยฟังก์ชันที่สร้างขึ้น (M-File) จะมีนามสกุลเป็น .M
  • Algorithm พัฒนาได้ง่ายไม่ยุ่งยาก สามารถแก้ไขปัญหาทางด้วนคณิตศาสตร์ที่มีความซับซ้อนได้ง่าย และรวดเร็วกว่าโปรแกรมภาษาอื่นๆ เช่น C Fortran Basic เป็นต้น
  • มีโครงสร้างแบบจำลอง (Simulink) ซึ่งเป็น Package ที่เรานำไปสร้างบล็อกไดอะแกรมเพื่อใช้ทดสอบ และประเมินผลระบบ Dynamic ต่างๆ ก่อนนำไปใช้งานจริง
  • สามารถวิเคราะห์และตรวจสอบข้อมูลได้ง่ายและรวดเร็ว
  • นำไปใช้งานในทางด้วนกราฟิกได้เป็นอย่างดีทั้งในด้านการแสดงภาพตั้งแต่สองมิติที่เป็น rectangular polar stair bar รวมทั้งภาพสมมิติในรูปแบบพื้นผิว (surface) และระดับสูงต่ำ (contour) ตลอดจนสามารถนำภาพมาต่อกัน และเก็บไว้เพื่อที่จะสร้างเป็นภาพเคลื่อนไหวได้อีกด้วย
  • ประยุกต์ใช้ในการสร้างรูปแบบ Graphical User Interface ได้โดยการเลือกใช้ object และเมนูต่างๆ โดยโปรแกรม MATLAB จะมีเครื่องมือให้เลือกใช้ เช่น เมนู รายการ ปุ่มกด และ fields object ต่างๆ เพื่อให้ผู้ใช้สามารถเลือกนำไปใช้ในการทำงานปฏิสัมพันธ์กันระหว่างผู้ใช้กับเครื่องคอมพิวเตอร์ได้
  • ทำการประมวลผลร่วมกับโปรแกรมอื่นได้ เช่น Fortran, Borland C/C++, Microsoft Visual C++ และ Watcom C/C++ ด้วยการเขียนฟังก์ชันที่เป็น mex ไฟล์โดยโปรแกรม MATLABจะเรียกใช้รูทีนจากโปรแกรมภาษา C และ Fortran
  • โปรแกรม MATLAB เป็นระบบ interactive ซึ่งส่วนของข้อมูลพื้นฐานเป็นอาร์เรย์ที่ไม่ต้องการมิติ ทำให้โปรแกรม MATLAB สามารถทำการแก้ปัญหาทางเทคนิคต่างๆ ได้มากใช้เวลาในการประมวลผลน้อย และดีกว่าโปรแกรมภาษา C และ Fortran


  • ทำไมต้องใช้ MATLAB ด้วย ใช้ภาษาอื่นไม่ได้หรือ
    คอมพิวเตอร์ได้สร้างขั้นมาเพื่อใช้ในการแก้ปัญหาในเชิงตัวเลขโดยมีภาษาทางคอมพิวเตอร์หลายตัวที่ช่วยในการแก้ปัญหา เช่น ภาษา C, Fortran , Pascal เป็นต้น การใช้โปรแกรมภาษา C, Fortran และ Pascal ในการแก้ปัญหาเชิงตัวเลข และกราฟิกที่มีความซับซ้อนค่อนข้างจะยุ่งยากและเสียเวลามาก เพราะต้องใช้คำสั่งเป็นจำนวนมาก และมีรูปแบบคำสั่งที่แน่นอน บริษัท MathWorks Inc, จึงได้พัฒนาโปรแกรมที่มีชื่อว่า MATLAB เพื่อใช้ในการคำนวณเชิงตัวเลข และกราฟิกที่ซับซ้อนให้ง่ายต่อการใช้งาน มีความรวดเร็ว และการเขียนโปรแกรมไม่ยุ่งยาก เนื่องจากโปรแกรม MATLAB เป็นโปรแกรมที่มีการพัฒนาอย่างไม่หยุดยั้ง และเป็นโปรแกรมที่ง่ายต่อความเข้าใจ และเขียนโปรกแกรมไม่ซับซ้อน และเมื่อนำไปใช้งานและสามารถเห็นผลลัพธ์ได้อย่างรวดเร็ว ด้วยเหตุนี้เองจึงทำให้โปรแกรม MATLAB ถูกนำมาใช้งานกันอย่างกว้างขวางในสาขาต่าง ๆ


    คำสั่งโปรแกรม MATLAB รูปแบบการแสดงค่า ตัวอย่างค่า Pi
    format short การแสดงตัวเลข 5 ตำแหน่ง 3.1416
    format short e การแสดงตัวเลข 5 ตำแหน่งพร้อมเลข Exp 3.1416e+00
    format short g การแสดงตัวเลขที่ดีที่สุดระหว่างในรูปแบบสั้นๆ หรือในรูปแบบเลข Exp แล้วแต่ความเหมาะสม 3.1416
    format long การแสดงตัวเลข 16 ตำแหน่ง 3.14159265358979
    format long e การแสดงตัวเลข 16 ตำแหน่งพร้อมเลข Exp 3.14159265358979e+00
    format long g การแสดงตัวเลขแบบยาว 3.14159265358979
    format hex การแสดงตัวเลขแบบฐาน 16 คือ 1..9 และ A..F 400921fb54442d18
    format bank การแสดงตัวเลขแบบธนาคาร คือทศนิยม 2 ตำแหน่ง 3.14
    format + การแสดงค่าตัวเลขว่าเป็น บวก ลบ หรือ ศูนย์ +
    format rat การแสดงอัตราส่วนโดยประมาณ 355/113



    ตัวดำเนินการเครื่องหมายพิเศษและตัวดำเนินการเปรียบเทียบและตรรกะ
    ลักษณะการดำเนินการตัวดำเนินการรูปแบบทางคณิตศาสตร์รูปแบบทาง MATLAB
    การบวก
    การลบ
    การคูณ
    การคูณเชิงสมาชิก
    การหารทางขวา
    การหารทางซ้าย
    การหารเชิงสมาชิก
    การยกกำลัง
    การยกกำลังเชิงสมาชิก
    +
    -
    *
    .*
    /
    \
    ./
    Ab
    A.b
    a+b
    a-b
    axb
    -
    a/b
    b/a
    -
    ab
    -
    a+b
    a-b
    a*b
    a.*b
    a/b
    a\b
    a./b
    a^b
    a.^b

    ในทาง MATLAB คือการนำเอา Matrix a และ Matrix bมา Operate กัน เช่น + ,-,*,/,หรือยกกำลังกัน เพราะฉะนั้นเงื่อนไขการ Operate ต่างๆ จึงเป็นวิธีการทาง Matrix ส่วนเครื่องหมายที่มีจุด (.) แสดงว่าจะกระทำเฉพาะแถวกับหลักเดียวกัน เช่น 
    a = 1 2 3
        4 5 6
    b = 2 2 2
        2 2 2
    a.^b = 1  4  9
          16 25 36
    


    ตัวดำเนินการเปรียบเทียบและตรรกะ
    ลักษณะดำเนินการ ตัวดำเนินการเปรียบเทียบและตรรกะ ตัวอย่าง
    ลักษณะดำเนินการตัวดำเนินการเปรียบเทียบและตรรกะตัวอย่าง
    น้อยกว่า
    น้อยกว่าหรือเท่ากับ
    มากกว่า
    มากกว่าหรือเท่ากับ
    เท่ากับ
    ไม่เท่ากับ
    และ
    หรือ
    ไม่
    <
    <=
    >
    >=
    ==
    ~=
    &
    |
    ~
    x<10
    x<=10
    x>10
    x>=10
    x==1
    x~=5
    x>2 & y<1
    x>2 | y<1
    ~x


    ฟังก์ชั่นที่ใช้ในการหาค่าทางตรีโกณมิติ
    คำสั่งรายละเอียด
    sin(x)
    sinh(x)
    asin(x)
    asinh(x)
    ใช้คำนวณหาค่า Sine ของ x
    ใช้คำนวณหาค่า Hyperbolic sine.ของ x
    ใช้คำนวณหาค่า Inverse sine. ของ x
    ใช้คำนวณหาค่า Inverse hyperbolic sine. ของ x
    cos(x)
    cosh(x)
    acos(x)
    acosh(x)
    ใช้คำนวณหาค่า cos ของ x
    ใช้คำนวณหาค่า Hyperbolic cos.ของ x
    ใช้คำนวณหาค่า Inverse cos ของ x
    ใช้คำนวณหาค่า Inverse hyperbolic cos. ของ x
    tan(x)
    tanh(x)
    atan(x)
    atan2(x)
    atanh(x)
    ใช้คำนวณหาค่า Tangent ของ x
    ใช้คำนวณหาค่า Hyperbolic Tangent.ของ x
    ใช้คำนวณหาค่า Inverse Tangent. ของ x
    ใช้คำนวณหาค่าFour quadrant inverse tangent ของ x
    ใช้คำนวณหาค่า Inverse hyperbolic Tangent ของ x
    sec(x)
    sech(x)
    asec(x)
    asech (x)
    ใช้คำนวณหาค่า Secant. ของ x
    ใช้คำนวณหาค่า Hyperbolic Secant.ของ x
    ใช้คำนวณหาค่า Inverse Secant. ของ x
    ใช้คำนวณหาค่า Inverse hyperbolic Secant. ของ x
    csc(x)
    csch(x)
    acsc(x)
    acsch(x) 
    ใช้คำนวณหาค่า Cosecant ของ x
    ใช้คำนวณหาค่า Hyperbolic Cosecant.ของ x
    ใช้คำนวณหาค่า Inverse Cosecant. ของ x
    ใช้คำนวณหาค่า Inverse hyperbolic Cosecant ของ x
    cot(x)
    coth(x)
    acot (x)
    acoth(x)
    ใช้คำนวณหาค่า Cotangent ของ x
    ใช้คำนวณหาค่า Hyperbolic Cotangent.ของ x
    ใช้คำนวณหาค่า Inverse Cotangent. ของ x
    ใช้คำนวณหาค่า Inverse hyperbolic Cotangent ของ x

    ฟังก์ชั่นที่ใช้ในการหาค่า Exponential.
    คำสั่งรายละเอียด
    exp(x)
    log(x)
    log10(x)
    log2(x)
    pow2(x)
    nextpow2(x)
    ใช้คำนวณหาค่า Exponential. ของ x
    ใช้คำนวณหาค่า Natural logarithm.ของ x
    ใช้คำนวณหาค่า Common (base 10) logarithm. ของ x
    ใช้คำนวณหาค่า Base 2 logarithm and dissect floating point number. ของ x
    ใช้คำนวณหาค่า เลขยกกำลังที่มี 2 เป็นฐาน ของ x
    ใช้คำนวณหาค่า ตัวเลขยกกำลังที่มี 2 เป็นฐานที่มีค่าเท่ากับหรือมากกว่า ของ x
    abs(x)
    ceil(x)
    floor(x)
    round(x)
    sqrt (x)
    rem(x,y)
    sign(x)
    ใช้คำนวณหาค่า Absolute ของ x
    ใช้คำนวณหาค่าจำนวนเต็มใดๆที่ใกล้เคียงกับค่าของ x โดยให้ค่านั้นเข้าใกล้ ? มากที่สุด
    ใช้คำนวณหาค่าจำนวนเต็มใดๆที่ใกล้เคียงกับค่าของ x โดยให้ค่านั้นเข้าใกล้-? มากที่สุด
    ใช้คำนวณหาค่าจำนวนเต็มใดๆที่ใกล้เคียงกับค่าของ x โดยถ้าป็นทศนิยมเกิน 0.5 ปัดขึ้น
    ใช้คำนวณหาค่า Square root. ของ x
    ใช้คำนวณหาค่าเศษที่เหลือจากการหารกันระหว่าง x และ y
    ใช้สำหรับกำหนดค่าของ x ใดๆ ให้มีค่าเป็น -1,0,1
    ถ้าเป็น -1 แสดงว่าค่าของ x > 0
    ถ้าเป็น 0 แสดงว่าค่าของ x = 0
    ถ้าเป็น 1 แสดงว่าค่าของ x < 0