- 1. การประมวลผลภาพโดยใช้ MATLAB Editor Window
- 2. การประมวลผลภาพด้วย MATLAB GUI
- การสร้าง MATLAB Graphical User Interface สำหรับการประมวลผลภาพ
- MATLAB GUI Code สำหรับการประมวลผลภาพ
- รันโค้ด MATLAB GUI สำหรับการประมวลผลภาพ
ลองนึกภาพว่าเล็งกล้องของคุณไปที่วัตถุบางอย่างแล้วกล้องจะบอกชื่อของวัตถุนั้นใช่ Google Lens ในสมาร์ทโฟน Android กำลังทำสิ่งเดียวกันโดยใช้การประมวลผลภาพ สิ่งนี้ทำให้คอมพิวเตอร์มี วิสัยทัศน์ ในการตรวจจับและรับรู้สิ่งต่างๆและดำเนินการตามนั้น การประมวลผลภาพมีแอพพลิเคชั่นมากมายเช่นการตรวจจับและจดจำใบหน้าการแสดงผลนิ้วหัวแม่มือความเป็นจริงที่เพิ่มขึ้น OCR การสแกนบาร์โค้ดและอื่น ๆ อีกมากมาย มีซอฟต์แวร์มากมายสำหรับการประมวลผลภาพซึ่งMATLABเป็นโปรแกรมที่เหมาะสมที่สุดในการเริ่มต้น
MATLAB สามารถดำเนินการประมวลผลภาพขั้นสูงได้มากมาย แต่สำหรับการเริ่มต้นใช้งานการประมวลผลภาพใน MATLABเราจะอธิบายการทำงานพื้นฐานบางอย่างเช่น RGB เป็นสีเทาหมุนภาพการแปลงไบนารีเป็นต้นคุณสามารถสร้างโปรแกรมอัตโนมัติสำหรับการลบสัญญาณรบกวนภาพ ความชัดเจนการกรองโดยใช้ฟังก์ชันที่อธิบายไว้ในบทช่วยสอนนี้
ก่อนที่จะดำเนินการต่อไปหากคุณยังใหม่กับ MATLAB คุณสามารถตรวจสอบบทช่วยสอน MATLAB ก่อนหน้าของเราเพื่อให้เข้าใจได้ดีขึ้น:
- เริ่มต้นใช้งาน MATLAB: บทนำโดยย่อ
- การเชื่อมต่อ Arduino กับ MATLAB - LED กะพริบ
- การควบคุมมอเตอร์ DC โดยใช้ MATLAB และ Arduino
- Stepper Motor Control โดยใช้ MATLAB และ Arduino
- วิธีการพล็อตกราฟอุณหภูมิตามเวลาจริงโดยใช้ MATLAB
ใน MATLAB เช่นเคยมีสองวิธีในการดำเนินการอัลกอริทึมการประมวลผลภาพวิธีหนึ่งคือการป้อนคำสั่งโดยตรงในหน้าต่างตัวแก้ไข / คำสั่งและวิธีอื่น ๆ คือการสร้าง GUI สำหรับสิ่งเดียวกัน ที่นี่เราจะแสดงทั้งสองวิธีในการดำเนินการขั้นพื้นฐานของการประมวลผลภาพใน MATLAB
1. การประมวลผลภาพโดยใช้ MATLAB Editor Window
ตอนนี้เราจะเขียนโค้ดสำหรับการดำเนินการขั้นพื้นฐานของการประมวลผลภาพในหน้าต่างตัวแก้ไข ทำความคุ้นเคยกับคำศัพท์พื้นฐานทั้งหมดที่ใช้ใน MATLAB ตามลิงค์ คัดลอกและวางโค้ดด้านล่างในหน้าต่างตัวแก้ไข
a = imread ('F: \ circuit Digest \ image processing โดยใช้ matlab \ camerman.jpg'); เรื่องย่อ (2,3,1); imshow (ก); b = rgb2gray (ก); เรื่องย่อ (2,3,2); imshow (b); c = im2bw (ก); แผนภาพย่อย (2,3,3); imshow (c); d = imadjust (b); เรื่องย่อย (2,3,4); imshow (d); e = a; e = rgb2gray (จ); แผนภาพย่อย (2,3,5); imhist (จ); imfinfo ('F: \ circuit Digest \ image processing โดยใช้ matlab \ beard-man.jpg') = size (a) % colormap ('spring')
ในตัวแปร 'a' เรากำลังนำเข้ารูปภาพโดยใช้คำสั่ง imread ('ชื่อไฟล์') จากนั้นสร้างพล็อตของแถว '2' และ '3' โดยใช้พล็อต ย่อย (แถวคอลัมน์ตำแหน่ง) และแสดงรูปภาพที่นำเข้าบนตำแหน่ง 1 '. เพื่อแสดงให้เห็นภาพที่เราใช้คำสั่ง imshow ( 'ชื่อไฟล์')
ด้านล่างนี้เป็นคำสั่งไม่กี่คำสั่งในการประมวลผลขั้นพื้นฐานกับภาพที่อัปโหลด:
- ในตัวแปร 'b' เรากำลังแปลงภาพ RGB เป็นภาพความเข้มระดับสีเทาโดยใช้คำสั่ง rgb2gray ('filename') และแสดงในพล็อตที่ตำแหน่ง '2'
- ในตัวแปร 'c' เรากำลังแปลงรูปภาพเป็นรูปภาพไบนารีหรือคุณสามารถพูดในรูปแบบ '0' (สีดำ) และ '1' (สีขาว) โดยใช้คำสั่ง im2bw ('ชื่อไฟล์') และแสดงในรูปแบบบน ตำแหน่ง '3'
- ในตัวแปร 'd' เรากำลังปรับหรือแมปค่าความเข้มของภาพโทนสีเทาโดยใช้คำสั่ง imadjust ('filename') และแสดงในพล็อตที่ตำแหน่ง '4'
- ในตัวแปร 'e' เรากำลังพล็อตฮิสโตแกรมของภาพระดับสีเทาโดยใช้คำสั่ง imhist ('ชื่อไฟล์') และแสดงในพล็อตที่ตำแหน่ง '5' สำหรับการพล็อตฮิสโตแกรมคุณจะต้องแปลงรูปภาพเป็นโทนสีเทาเสมอจากนั้นคุณจะสามารถเห็นฮิสโตแกรมของไฟล์กราฟิกนั้นได้
- คำสั่ง Imfinfo ('filename with location') ใช้เพื่อแสดงข้อมูลเกี่ยวกับไฟล์กราฟิก
- คำสั่ง = size ('filename') ใช้เพื่อแสดงขนาดและระนาบสีของไฟล์กราฟิกเฉพาะ
- colormap ('spring') ใช้เพื่อเปลี่ยนประเภทของ colormap ของไฟล์กราฟิก ที่นี่ในรหัสของฉันฉันตั้งคำสั่งนี้เป็นความคิดเห็น แต่คุณสามารถใช้ได้โดยการลบเครื่องหมายเปอร์เซ็นต์ MATLAB มีสีหลายประเภทเช่น Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Lines และ Spring
เช่นนี้มีคำสั่งจำนวนมากใน MATLAB ซึ่งสามารถใช้เพื่อทำงานต่างๆได้คุณสามารถตรวจสอบฟังก์ชั่นการประมวลผลภาพใน MATLAB ได้ตามลิงค์
2. การประมวลผลภาพด้วย MATLAB GUI
การสร้าง MATLAB Graphical User Interface สำหรับการประมวลผลภาพ
สำหรับการสร้าง GUI (Graphical User Interface) สำหรับการเปิดตัวการประมวลผลภาพ GUI โดยการพิมพ์คำสั่งดังต่อไปนี้ในหน้าต่างคำสั่ง
คู่มือ
หน้าต่างป๊อปอัปจะเปิดขึ้นจากนั้นเลือก GUI เปล่า ใหม่ดังที่แสดงในภาพด้านล่าง
ตอนนี้เราต้องเลือกจำนวนปุ่ม (ทุกปุ่มจะทำงานที่แตกต่างกัน) และหนึ่งแกนเพื่อแสดงภาพ
หากต้องการปรับขนาดหรือเปลี่ยนรูปร่างของปุ่มกดหรือแกนเพียงแค่คลิกที่ปุ่มแล้วคุณจะสามารถลากมุมของปุ่มได้ เมื่อดับเบิลคลิกที่สิ่งเหล่านี้คุณจะสามารถเปลี่ยนสีสตริงแท็กและตัวเลือกอื่น ๆ ของปุ่มนั้น ๆ ได้ หลังจากปรับแต่งแล้วจะมีลักษณะดังนี้
คุณสามารถปรับแต่งปุ่มตามที่คุณเลือก ตอนนี้เมื่อคุณบันทึกรหัสจะถูกสร้างขึ้นใน หน้าต่างแก้ไข ของ MATLAB แก้ไขโค้ดที่สร้างขึ้นเพื่อตั้งค่างานสำหรับปุ่มกดต่างๆ ด้านล่างนี้เราได้แก้ไขโค้ด MATLAB
MATLAB GUI Code สำหรับการประมวลผลภาพ
กรอกรหัส MATLAB สำหรับการประมวลผลภาพโดยใช้ MATLAB GUIจะได้รับในตอนท้ายของโครงการนี้ นอกจากนี้เรายังรวมไฟล์ GUI (.fig) และไฟล์โค้ด (.m) ไว้ที่นี่เพื่อดาวน์โหลดซึ่งคุณสามารถปรับแต่งปุ่มหรือขนาดแกนได้ตามความต้องการของคุณ เราได้แก้ไขโค้ดที่สร้างขึ้นตามคำอธิบายด้านล่าง
ในฟังก์ชั่น 'uploadimage' ให้คัดลอกและวางโค้ดด้านล่างเพื่อแทรกไฟล์จากพีซี ที่นี่คำสั่ง uigetfile ('image extension type') ใช้สำหรับการนำเข้ารูปภาพใน MATLAB GUI อ่านว่าไฟล์โดยใช้คำสั่ง imread () แล้วแสดงว่ามันมีคำสั่ง imshow () บน axes1 ใช้ แกน (handles.axes1) ตอนนี้ด้วยคำสั่ง setappdata () ให้ เก็บตัวแปรไว้ใน GUI ดังนั้นตัวแปรจะสามารถเข้าถึงส่วนหนึ่งของ GUI ไปยังส่วนอื่น ๆ ของ GUI ได้
a = uigetfile ('. jpg') a = imread (a); แกน (handles.axes1); imshow (ก); setappdata (0, 'a', ก)
ตอนนี้ในทุกฟังก์ชั่นคุณจะเห็นคำสั่ง getappdata () ซึ่งใช้ในการดึงข้อมูลที่จัดเก็บโดยใช้ setappdata () ใน GUI
ในที่นี้เราจะอธิบายแปดฟังก์ชันที่ใช้กันทั่วไปในการประมวลผลภาพ
ส. เลขที่ |
คำสั่ง |
ชื่อปุ่ม |
งานที่ต้องดำเนินการ |
1. |
uigetfile () |
อัปโหลดรูปภาพ |
คลิกเพื่อนำเข้าภาพจากดิสก์ |
2. |
rgb2gray () |
RGB เป็นสีเทา |
คลิกเพื่อแปลงภาพ RGB เป็นโทนสีเทา |
3. |
im2bw () |
แปลงเป็นภาพไบนารี |
คลิกเพื่อแปลงรูปภาพเป็นไบนารี |
4. |
- |
รีเซ็ต |
คลิกเพื่อรีเซ็ตรูปภาพเป็นต้นฉบับ |
5. |
imhist () |
ฮิสโตแกรม |
คลิกเพื่อดูฮิสโตแกรมของภาพ |
6. |
ใช้งาน () |
รูปภาพเสริม |
คลิกเพื่อตรวจสอบรูปภาพประกอบ |
7. |
ขอบ (ชื่อไฟล์วิธีการ) |
การตรวจจับขอบ |
คลิกเพื่อตรวจหาขอบในภาพ |
8. |
imrotate (ชื่อไฟล์มุม) |
หมุนตามเข็มนาฬิกา |
คลิกเพื่อหมุนภาพไปในทิศทางตามเข็มนาฬิกา |
9. |
imrotate (ชื่อไฟล์มุม) |
หมุนทวนเข็มนาฬิกา |
คลิกเพื่อหมุนภาพไปในทิศทางทวนเข็มนาฬิกา |
1. แปลงภาพ RGB เป็นโทนสีเทา
ใน 'rgb2gray' ฟังก์ชั่น, คัดลอกและวางด้านล่างรหัสแปลงภาพ RGB ไปเป็นสีเทาโดยใช้คำสั่ง rgb2gray ()
a = getappdata (0, 'a'); agray = rgb2gray (ก); แกน (handles.axes1); imshow (agray);
2. แปลงเป็นภาพไบนารี
ใน 'im2bw' ฟังก์ชั่น, คัดลอกและวางด้านล่างรหัสแปลงภาพลงในภาพไบนารีหรือคุณสามารถพูดในรูปแบบของ '0' (สีดำ) และ '1' (สีขาว) โดยใช้คำสั่ง im2bw ()
a = getappdata (0, 'a'); abw = im2bw (ก); แกน (handles.axes1); imshow (abw);
3. รีเซ็ตเป็นภาพต้นฉบับ
ในฟังก์ชั่น 'รีเซ็ต' ให้คัดลอกและวางโค้ดด้านล่างเพื่อรีเซ็ตรูปภาพที่แก้ไขเป็นรูปภาพต้นฉบับ
a = getappdata (0, 'a'); แกน (handles.axes1); imshow (ก);
4. พล็อตภาพฮิสโตแกรม
ในฟังก์ชัน 'ฮิสโตแกรม' ให้คัดลอกและวางโค้ดด้านล่างเพื่อพล็อตฮิสโตแกรมของภาพระดับสีเทาโดยใช้คำสั่ง imhist ('ชื่อไฟล์') และแสดงใน แกน 1 สำหรับการพล็อตฮิสโตแกรมคุณจะต้องแปลงรูปภาพเป็นโทนสีเทาเสมอจากนั้นคุณจะสามารถเห็นฮิสโตแกรมของไฟล์กราฟิกนั้นได้
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (อาฮิสต์); แกน (handles.axes1); imhist (อาฮิสต์);
5. แปลงเป็นรูปภาพเสริม
ใน 'complementimage' ฟังก์ชั่น, คัดลอกและวางด้านล่างรหัสเพื่อดูส่วนประกอบของกราฟิกแทรกไฟล์โดยใช้คำสั่ง imcomplement ()
a = getappdata (0, 'a'); acomp = a; acomp = ดำเนินการ (acomp); แกน (handles.axes1); imshow (acomp);
6. การ ตรวจจับขอบโดยใช้วิธี Canny
ใน 'ขอบ' ฟังก์ชั่น, คัดลอกและวางด้านล่างรหัสการตรวจสอบและพบว่าขอบในภาพระดับสีเทาโดยใช้คำสั่ง ขอบ ('ชื่อไฟล์', 'วิธีการ') ในสถานที่ของ วิธีการ ที่คุณสามารถเลือกระหว่างทั้งสาม แสนรู้, Prewitt และการตัดต่อภาพเราใช้วิธี Canny ใน การตรวจจับขอบ นอกจากนี้คุณไม่สามารถตรวจจับขอบได้โดยตรงจากภาพต้นฉบับก่อนอื่นคุณต้องแปลงเป็นสีเทาจากนั้นคุณจะสามารถตรวจจับขอบได้
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (เอดจ์); aedge = edge (aedge , 'Canny') ' แกน (handles.axes1); imshow (เอดจ์);
7. หมุนภาพตามเข็มนาฬิกา
ในฟังก์ชั่น 'ตามเข็มนาฬิกา' ให้คัดลอกและวางโค้ดด้านล่างเพื่อหมุนรูปภาพในทิศทางตามเข็มนาฬิกาโดยใช้คำสั่ง imrotate (ชื่อไฟล์, 'มุม')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 270); แกน (handles.axes1); imshow (แอคล็อค);
8. หมุนภาพทวนเข็มนาฬิกา
ในฟังก์ชั่น 'ทวนเข็มนาฬิกา' ให้คัดลอกและวางรหัสด้านล่างเพื่อหมุนภาพในทิศทางทวนเข็มนาฬิกาโดยใช้คำสั่ง imrotate (ชื่อไฟล์, 'มุม')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 90); แกน (handles.axes1); imshow (แอคล็อค);
รันโค้ด MATLAB GUI สำหรับการประมวลผลภาพ
ตอนนี้คลิกที่ปุ่ม 'RUN' เพื่อเรียกใช้โค้ดที่แก้ไขในไฟล์. m
MATLAB อาจใช้เวลาไม่กี่วินาทีในการตอบสนองอย่าคลิกที่ปุ่ม GUI ใด ๆ จนกว่า MATLAB จะแสดงข้อความไม่ว่างที่มุมล่างซ้ายดังที่แสดงด้านล่าง
เมื่อทุกอย่างพร้อมแล้วให้นำเข้าภาพจากเครื่องพีซีโดยคลิกที่ปุ่ม "อัปโหลดภาพ" ตอนนี้คุณจะสามารถแปลงหรือหมุนภาพได้โดยคลิกปุ่มใดก็ได้ตามนั้น ตารางด้านล่างนี้จะแสดงให้คุณเห็นว่าเรากำลังดำเนินการอยู่เมื่อคลิกปุ่มใด ๆ:
ผลการคลิกแต่ละปุ่มจะแสดงด้านล่าง
การทำงานที่สมบูรณ์ของแต่ละปุ่มจะแสดงให้เห็นในวิดีโอด้านล่าง
คุณสามารถประมวลผลภาพขั้นสูงได้ด้วยกล่องเครื่องมือการประมวลผลภาพซึ่งคุณสามารถซื้อได้จากเว็บไซต์ทางการของ MATHWORKS การดำเนินการระดับขั้นสูงบางส่วนมีดังต่อไปนี้:
- การดำเนินการทางเรขาคณิต
- บล็อกการดำเนินการ
- การกรองและการออกแบบตัวกรองเชิงเส้น
- แปลงร่าง
- การวิเคราะห์และปรับปรุงภาพ
- การดำเนินการภาพไบนารี