Matlab image processing ตัวอย่าง

Matlab image processing ตัวอย่าง

Example files for "Image Processing Made Easy" Webinar, first delivered Feb 27, 2014.

  • Follow

These are the example files used in the Webinar "Image Processing Made Easy", first delivered on February 27, 2014. In this webinar we explore the fundamentals of image processing using MATLAB. Visit the following link to view the recorded session: http://www.mathworks.com/videos/image-processing-made-easy-81718.html

Cite As

Andy Thé (2023). Example files for "Image Processing Made Easy" Webinar (https://www.mathworks.com/matlabcentral/fileexchange/46318-example-files-for-image-processing-made-easy-webinar), MATLAB Central File Exchange. Retrieved November 19, 2023.

Image Registration/

Image Segmentation/

Version Published Release Notes 1.1.0.1 1 Sep 2016

Updated license

Download

1.1.0.0 16 May 2014

Updated demos so that that there is just a link to the in product image enhancement demo.

Download

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

Share Knowledge-1.png (495.46 KiB) Viewed 3205 times

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

ในบทความนี้จะกล่าวถึงคำสั่งพื้นฐานของ Matlab ที่ใช้ในการทำ Image Processing

โค้ด:

imread('fileName');  //สำหรับอ่านชื่อไฟล์หรือรูปภาพ
สามารถอ่านข้อมูลแล้วเก็บไว้ในตัวแปรได้ เช่น เก็บในตัวแปร pic จะได้
pic = imread('fileName');

ข้อมูลรูปภาพที่ Matlab สามารถอ่านได้คือ tiff, jpeg, gif, bmp, png, xwd

โค้ด:

impixelinfo    //สำหรับอ่านค่า RGB ที่ pixel ที่เอาเม้าส์ชี้

โค้ด:

pic = rgb2grey(fileName);  //แปลงไฟล์ภาพเป็นขาวดำ เก็บในตัวแปร pic

โค้ด:

แปลงขนาดภาพในตัวแปร pic เก็บในตัวแปร newpic
newpic = imresize(pic, 0.5);      //ลดขนาดภาพ pic ลง 50% หรือ
newpic = imresize(pic, [100, 100]);    //แปลงขนาดภาพในตัวแปร pic เป็น 100x100

โค้ด:

pic(x, y, rgb);    //เป็นการอ่านค่าสีของรูปภาพในตัวแปร RGB เช่น ดูค่า RGB ที่รูปพิกัดที่ 3,7 จะได้ pic(3,7,:);

หากไม่มีตัวแปรมารองรับ จะเก็บค่าไว้ในตัวแปร ans อัตโนมัติ ผลลัพธ์ที่ได้จะมี 3 layer คือ R, G และ B

โค้ด:

imshow(pic(:,:,rgb));  //สำหรับดูองค์ประกอบของสีในรูปภาพ ในตัวแปร pic

ในส่วนของ rgb หากต้องการดูค่า R จะแทนด้วยเลข 1, ค่า G แทนด้วยเลข 2 และ B แทนด้วยเลข 3

โค้ด:

pic(x, y) = value;  //สำหรับเปลี่ยนค่าที่พิกัดใน x,y เช่น
pic(3,7) = 0;  จะทำให้ pixel ในพิกัดที่ 3,7 มีค่าเป็น 0

นอกจากจะดูเป็นค่า RGB แล้ว เรายังสามารถแปลงเป็นแบบ hsv ได้ ด้วยคำสั่ง

โค้ด:

newpic = rgb2hsv(pic);    //แปลงค่าสีในตัวแปร pic เป็นแบบ hsv เก็บในตัวแปร newpic

อ้างอิง https://medium.com/@watchanan/

บทความที่เกี่ยวข้อง

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

ลองมาดูตัวอย่างกันเลยครับ ว่าแม็ทแล็ปใช้ทำอะไรเกี่ยวกับ image processing ได้บ้าง

1. การตรวจจับใบหน้า (อย่างง่าย) - Simple face detection

2. การตรวจเช็คโทนสี (สว่าง-มืด)

3. การตรวจจับสีอย่างง่าย (Simple colors detection)

4. การสร้างโปรแกรมรู้จำตัวอักษร

โพสต์ยอดนิยมจากบล็อกนี้

การแก้สมการ Differential ด้วย MATLAB

ถ้าใครเรียนด้านวิศวกรรม หรือ วิทย์คณิต หรือ ฟิสิกส์ ผมเชื่อว่าทุกคนคงจะเคยเจอสมการพวกนี้แน่นอน และสมการพวกนี้ก็จะยิ่งยุ่งยากซับซ้อนขึ้นไปเรื่อยๆ จนเราไม่สามารถแก้สมการด้วยมือได้ ยกตัวอย่างเช่น สมการของ error ฟังก์ชัน ถ้าใครจำได้สมัยเรียนอาจารย์จะแจกเป็นตารางมาให้เลย โดยที่เราไม่ต้องแก้สมการนี้ด้วยตัวเอง แต่เวลาเราใช้งานจริงๆ นั้น ไม่มีใครไปนั่งแก้สมการให้เสียเวลาหรอกครับ เพราะมันเสียเวลา และไม่รู้ว่าคำตอบที่ได้ออกมาจะถูกรึเปล่า ดังนั้นในการทำงาน หรือการทำวิจัย เราจะใช้ MATLAB เข้ามาช่วยแก้ปัญหาพวกนี้ให้แทนครับ ตัวอย่างเช่น ผมมีสมการ differential ที่ต้องการแก้อยู่ 3 สมการ ดังนี้ dy1/dt = y2*y3 dy2/dt = -y1*y3 dy3/dt = -0.51*y1*y2 โดยมีค่าเริ่มต้น (initial condition) ดังนี้ y1(0) = 0 y2(0) = 1 y3(0) = 1 ปกติแล้วค่าเริ่มต้นจะเป็นค่าใดก็ได้ เราแค่สุ่มเลือกมาใช้ก็พอ แต่....ก็ไม่ใช่ว่าทุกค่าจะใช้ได้ ซึ่งจริงๆ มันก็มีวิธีการเช็คว่าค่าไหนใช้ได้หรือไม่ได้ แต่ผมแนะนำให้เช็คด้วยการทดสอบจริงเลยง่ายกว่าครับ ค่าเริ่มต้นที่ไม่เหมาะสม จะทำให้สมการหาคำตอบไม่ได้ หรือคำตอบผิดเพี้ยน

การใช้งาน Try-Catch จัดการกับ error

Matlab image processing ตัวอย่าง

วิธีการจัดการกับ Error ง่ายๆ อีกวิธีก็คือการใช้ Try-Catch นั่นเองครับ คำสั่ง try-catch ทำหน้าที่ "ละเลย errror" ครับ ผมให้นิยามแบบนี้ละกัน 5555+ คือหากเป็นโค้ดโปรแกรมปกติ เมื่อเกิด error ขึ้น โปรแกรมจะหยุดทำงานทันที แต่หากเราใช้ try-catch โปรแกรมก็จะ "ละเลย" หรือ "ไม่สนใจ" error นั้น แล้วทำงานต่อไป เหมือนไม่มีอะไรเกิดขึ้น มาดูตัวอย่างกันดีกว่าครับ % ---- MATLAB Programing -----% % Example: How to use try-catch % % Create by: Kritthanit % % Create date: 20-12-2018 % % Blog: https://loglike.blogspot.com % % Fanpage: https://www.facebook.com/Matlab-Programing-194695677296190 % % --------% clc ; clear ; close all ; try % normal process S = load ( 'test01.txt' ) ;

MATLAB OCR 7-Segment Part2

Matlab image processing ตัวอย่าง

Step 1 อ่านภาพและแปลงเป็นไบนารี่ (ขาว-ดำ) ภาพที่ใช้ในตัวอย่างนี้ คือ ภาพนี้นะครับ ถ้าใครจะเอาภาพนี้ไปใช้เป็นตัวอย่าง ก็คลิกขวาแล้วเลือก "บันทึกภาพ" ได้เลยครับ 7segment.png มาเริ่มเขียนโปรแกรมกันเลยครับ clc ; clear ; close all ; pic = imread ( '7segment.png' ) ; bw = im2bw ( pic , 0.1 ) ; เนื่องจากเป็นการเริ่มเขียนโปรแกรมขึ้นมาใหม่ ผมมักจะแนะนำให้ใส่โค้ด clc;clear;close all; ไว้บรรทัดบนสุดเสมอนะครับ เพื่อทำการเคลียร์หน้าจอ command window (clc) และเคลียร์ข้อมูลตัวแปรใน workspace (clear) สุดท้ายคือปิดหน้า figure ทั้งหมดที่เปิดอยู่ (close all) ซึ่งในการใช้งานจริง การเคลียร์ข้อมูลก่อนรันแบบนี้จะมีประโยชน์มากครับ เพราะว่า... 1. เราไม่ต้องสับสนกับตัวแปรเก่า หรือตัวแปรจากโปรแกรมอื่นๆ เช่น ถ้าเราไม่ลบข้อมูลตัวแปรในโปรแกรมก่อนหน้านี้ ซึ่งอาจมีตัวแปร pic เหมือนกัน แต่มันเก็บข้อมูลคนละรูป แล้วในโปรแกรมนี้เราดันลืมเขียนตัวแปร pic ให้อ่านภาพใหม่ โปรแกรมเราก็จะยังทำงานได้นะครับ เพราะมันเจอตัวแปร pic ของโปรแกรมเก่า แต่ผลที่ได้คือโปรแกรมทำงานผิดพลาด 2