- 1. Xử lý hình ảnh bằng cách sử dụng MATLAB Editor Window
- 2. Xử lý hình ảnh với MATLAB GUI
- Tạo giao diện người dùng đồ họa MATLAB để xử lý hình ảnh
- Mã GUI MATLAB để xử lý hình ảnh
- Chạy mã GUI MATLAB để xử lý hình ảnh
Hãy tưởng tượng bạn đang hướng máy ảnh của bạn vào một vật thể nào đó và máy ảnh cho bạn biết tên của vật thể đó, vâng, Google Lens trên điện thoại thông minh Android cũng đang thực hiện điều tương tự bằng Xử lý hình ảnh. Điều này cho phép máy tính có tầm nhìn để phát hiện và nhận ra các sự vật và thực hiện các hành động phù hợp. Xử lý hình ảnh có rất nhiều ứng dụng như Nhận diện và nhận diện khuôn mặt, lấy dấu ngón tay cái, thực tế tăng cường, OCR, quét mã vạch và nhiều ứng dụng khác. Có rất nhiều phần mềm có sẵn để xử lý ảnh, trong đó MATLAB là phần mềm phù hợp nhất để bắt đầu.
MATLAB có thể thực hiện nhiều thao tác xử lý hình ảnh nâng cao, nhưng để Bắt đầu với xử lý hình ảnh trong MATLAB, ở đây chúng tôi sẽ giải thích một số thao tác cơ bản như RGB thành Xám, xoay hình ảnh, chuyển đổi nhị phân, v.v. Bạn có thể tạo thêm các chương trình tự động để loại bỏ nhiễu, hình ảnh rõ ràng, lọc bằng cách sử dụng các chức năng được giải thích trong hướng dẫn này.
Trước khi tiếp tục, nếu bạn chưa quen với MATLAB, bạn có thể xem các hướng dẫn về MATLAB trước đây của chúng tôi để hiểu rõ hơn:
- Bắt đầu với MATLAB: Giới thiệu nhanh
- Giao diện Arduino với MATLAB - Đèn LED nhấp nháy
- Điều khiển động cơ DC bằng MATLAB và Arduino
- Điều khiển động cơ bước bằng MATLAB và Arduino
- Cách vẽ biểu đồ nhiệt độ thời gian thực bằng MATLAB
Trong MATLAB, như mọi khi, có hai cách để thực hiện bất kỳ thuật toán xử lý hình ảnh nào, một là nhập trực tiếp lệnh vào cửa sổ trình soạn thảo / lệnh và cách khác là tạo một GUI cho tương tự. Ở đây, chúng tôi sẽ chỉ cho bạn cả hai phương pháp để thực hiện các thao tác xử lý ảnh cơ bản trong MATLAB.
1. Xử lý hình ảnh bằng cách sử dụng MATLAB Editor Window
Bây giờ, chúng ta sẽ viết mã để thực hiện một số thao tác xử lý ảnh cơ bản trong cửa sổ trình chỉnh sửa. Để làm quen với tất cả các thuật ngữ cơ bản được sử dụng trong MATLAB, hãy làm theo liên kết. Sao chép và dán đoạn mã dưới đây vào cửa sổ trình chỉnh sửa, a = imread ('F: \ mạch thông báo \ xử lý hình ảnh bằng matlab \ camerman.jpg'); subplot (2,3,1); imshow (a); b = rgb2gray (a); subplot (2,3,2); imshow (b); c = im2bw (a); subplot (2,3,3); imshow (c); d = imadjust (b); subplot (2,3,4); imshow (d); e = a; e = rgb2gray (e); subplot (2,3,5); imhist (e); imfinfo ('F: \ mạch tiêu hóa \ xử lý hình ảnh bằng matlab \ râu-man.jpg') = size (a) % colormap ('spring')
Trong biến 'a', chúng tôi đang nhập hình ảnh bằng lệnh imread ('tên tệp') và sau đó tạo một đồ thị của hàng '2' và cột '3' bằng cách sử dụng ô con (hàng, cột, vị trí) và hiển thị hình ảnh đã nhập trên vị trí ' 1 '. Để hiển thị hình ảnh, chúng tôi sử dụng lệnh imshow ('tên tệp') .
Dưới đây là một số lệnh để thực hiện một số xử lý cơ bản trên hình ảnh đã tải lên:
- Trong biến 'b', chúng tôi đang chuyển đổi hình ảnh RGB thành hình ảnh cường độ thang độ xám bằng cách sử dụng lệnh rgb2gray ('tên tệp') và hiển thị nó trong biểu đồ ở vị trí '2'.
- Trong biến 'c', chúng tôi đang chuyển đổi hình ảnh thành hình ảnh nhị phân hoặc bạn có thể nói ở định dạng '0' (đen) và '1' (trắng) bằng cách sử dụng lệnh im2bw ('tên tệp') và hiển thị nó trong biểu đồ trên vị trí '3'.
- Trong biến 'd', chúng tôi đang điều chỉnh hoặc ánh xạ các giá trị cường độ ảnh thang độ xám bằng cách sử dụng lệnh imadjust ('tên tệp') và hiển thị nó trong biểu đồ ở vị trí '4'.
- Trong biến 'e', chúng tôi đang vẽ biểu đồ của hình ảnh thang độ xám bằng cách sử dụng lệnh imhist ('tên tệp') và hiển thị nó trong biểu đồ ở vị trí '5'. Để vẽ biểu đồ, bạn luôn phải chuyển hình ảnh thành thang độ xám và sau đó bạn sẽ có thể xem biểu đồ của tệp đồ họa đó.
- Lệnh Imfinfo ('tên tệp với vị trí') được sử dụng để hiển thị thông tin về tệp đồ họa.
- Lệnh = size ('filename') được sử dụng để hiển thị kích thước và mặt phẳng màu của một tệp đồ họa cụ thể.
- bản đồ màu ('spring') được sử dụng để thay đổi loại bản đồ màu của tệp đồ họa. Ở đây, trong mã của tôi, tôi đặt lệnh này làm bình luận nhưng bạn có thể sử dụng nó bằng cách loại bỏ dấu phần trăm. Có nhiều loại màu trong MATLAB như Jet, HSV, Hot, Cool, Summer, Autumn, Winter, Grey, Bone, Copper, Pink, Line và spring.
Giống như những lệnh này, có một số lệnh trong MATLAB có thể được sử dụng để thực hiện các tác vụ khác nhau, bạn có thể kiểm tra các chức năng xử lý ảnh trong MATLAB theo liên kết.
2. Xử lý hình ảnh với MATLAB GUI
Tạo giao diện người dùng đồ họa MATLAB để xử lý hình ảnh
Để xây dựng GUI (Giao diện người dùng đồ họa) cho Xử lý hình ảnh, hãy khởi chạy GUI bằng cách gõ lệnh dưới đây trong cửa sổ lệnh .
hướng dẫn
Một cửa sổ bật lên sẽ mở ra, sau đó chọn GUI trống mới như được hiển thị trong hình ảnh bên dưới,
Bây giờ chúng ta phải chọn số lượng nút (mỗi nút sẽ thực hiện nhiệm vụ khác nhau) và một trục để hiển thị hình ảnh.
Để thay đổi kích thước hoặc thay đổi hình dạng của Nút bấm hoặc Trục, chỉ cần nhấp vào nó và bạn sẽ có thể kéo các góc của nút. Bằng cách nhấp đúp vào bất kỳ nút nào trong số này, bạn sẽ có thể thay đổi màu, chuỗi, thẻ và các tùy chọn khác của nút cụ thể đó. Sau khi tùy chỉnh nó sẽ như thế này
Bạn có thể tùy chỉnh các nút theo sự lựa chọn của mình. Bây giờ khi bạn lưu nó, một mã sẽ được tạo trong cửa sổ Editor của MATLAB. Chỉnh sửa mã đã tạo để đặt nhiệm vụ cho các nút bấm khác nhau. Dưới đây chúng tôi đã chỉnh sửa mã MATLAB.
Mã GUI MATLAB để xử lý hình ảnh
Mã MATLAB hoàn chỉnh cho Xử lý hình ảnh bằng MATLAB GUI, được đưa ra ở cuối dự án này. Hơn nữa, chúng tôi bao gồm tệp GUI (.fig) và tệp mã (.m) tại đây để tải xuống, sử dụng tệp này bạn có thể tùy chỉnh các nút hoặc kích thước Axes theo yêu cầu của bạn. Chúng tôi đã chỉnh sửa mã được tạo như được giải thích bên dưới.
Trong chức năng 'uploadimage' , sao chép và dán đoạn mã dưới đây để chèn tệp từ PC. Ở đây, lệnh uigetfile ('loại phần mở rộng hình ảnh') được sử dụng để nhập hình ảnh trong MATLAB GUI. Đọc tệp đó bằng lệnh imread () và sau đó hiển thị nó bằng lệnh imshow () trên axis1 bằng cách sử dụng các trục (handle.axes1) . Bây giờ, với lệnh setappdata (), hãy lưu trữ biến trong GUI để biến sẽ có thể truy cập vào một phần của GUI đến phần khác của GUI.
a = uigetfile ('. jpg') a = imread (a); trục (tay cầm.axes1); imshow (a); setappdata (0, 'a', a)
Bây giờ, trong mọi hàm, bạn sẽ thấy lệnh getappdata () được sử dụng để truy xuất dữ liệu được lưu trữ bằng setappdata () trong GUI.
Ở đây chúng tôi sẽ giải thích tám hàm thường được sử dụng trong xử lý ảnh
S. Không. |
Chỉ huy |
Tên nút |
Nhiệm vụ được thực hiện |
1. |
uigetfile () |
Tải lên hình ảnh |
Nhấp để nhập hình ảnh từ Đĩa |
2. |
rgb2gray () |
RGB sang xám |
Nhấp để chuyển đổi hình ảnh RGB thành thang độ xám |
3. |
im2bw () |
Chuyển đổi sang hình ảnh nhị phân |
Nhấp để chuyển hình ảnh thành nhị phân |
4. |
- |
CÀI LẠI |
Bấm để đặt lại hình ảnh như ban đầu |
5. |
imhist () |
Biểu đồ |
Nhấp để xem biểu đồ của hình ảnh |
6. |
imcomplement () |
Hình ảnh bổ sung |
Nhấp để kiểm tra hình ảnh bổ sung |
7. |
edge (tên tệp, phương thức) |
Phát hiện cạnh |
Nhấp để phát hiện các cạnh trong hình ảnh |
số 8. |
imrotate (tên tệp, góc) |
Xoay theo chiều kim đồng hồ |
Nhấp để xoay hình ảnh theo chiều kim đồng hồ |
9. |
imrotate (tên tệp, góc) |
Xoay ngược chiều kim đồng hồ |
Nhấp để xoay hình ảnh theo hướng ngược chiều kim đồng hồ |
1. Chuyển đổi hình ảnh RGB thành thang độ xám
Trong hàm 'rgb2gray' , hãy sao chép và dán đoạn mã dưới đây để chuyển đổi hình ảnh RGB thành thang độ xám bằng cách sử dụng lệnh rgb2gray () .
a = getappdata (0, 'a'); agray = rgb2gray (a); trục (tay cầm.axes1); imshow (agray);
2. Chuyển đổi sang hình ảnh nhị phân
Trong hàm 'im2bw' , hãy sao chép và dán đoạn mã dưới đây để chuyển đổi hình ảnh thành hình ảnh nhị phân hoặc bạn có thể nói ở định dạng '0' (đen) và '1' (trắng) bằng cách sử dụng lệnh im2bw () .
a = getappdata (0, 'a'); abw = im2bw (a); trục (tay cầm.axes1); imshow (abw);
3. Đặt lại về hình ảnh gốc
Trong chức năng 'đặt lại' , sao chép và dán đoạn mã dưới đây để đặt lại ảnh đã chỉnh sửa thành ảnh gốc.
a = getappdata (0, 'a'); trục (tay cầm.axes1); imshow (a);
4. Biểu đồ hình ảnh lô
Trong hàm 'biểu đồ' , hãy sao chép và dán đoạn mã dưới đây để vẽ biểu đồ của hình ảnh thang độ xám bằng cách sử dụng lệnh imhist ('tên tệp') và hiển thị nó trên các trục1 . Để vẽ biểu đồ, bạn luôn phải chuyển hình ảnh thành thang độ xám và sau đó bạn sẽ có thể xem biểu đồ của tệp đồ họa đó.
a = getappdata (0, 'a'); ahist = a; ahist = rgb2gray (người lịch sử); trục (tay cầm.axes1); imhist (người lịch sử);
5. Chuyển đổi sang hình ảnh bổ sung
Trong hàm 'hình ảnh bổ sung' , hãy sao chép và dán đoạn mã dưới đây để xem phần bổ sung của tệp đồ họa được chèn bằng cách sử dụng lệnh imcomplement () .
a = getappdata (0, 'a'); acomp = a; acomp = imcomplement (acomp); trục (tay cầm.axes1); imshow (acomp);
6. Phát hiện cạnh bằng phương pháp Canny
Trong chức năng 'edge' , sao chép và dán đoạn mã dưới đây để phát hiện và tìm các cạnh trong hình ảnh thang độ xám bằng cách sử dụng lệnh edge ('filename', 'method') . Thay vì phương pháp, bạn có thể chọn trong số ba phương pháp này, Canny, Prewitt và dựng phim . Chúng tôi đang sử dụng phương pháp Canny để phát hiện cạnh. Ngoài ra, bạn không thể phát hiện cạnh trực tiếp từ hình ảnh gốc, trước tiên bạn phải chuyển nó thành thang độ xám và sau đó bạn có thể phát hiện các cạnh.
a = getappdata (0, 'a'); aedge = a; aedge = rgb2gray (aedge); aedge = edge (aedge , 'Canny') ' trục (handle.axes1); imshow (aedge);
7. Xoay hình ảnh theo chiều kim đồng hồ
Trong chức năng 'chiều kim đồng hồ' , sao chép và dán đoạn mã dưới đây để xoay hình ảnh theo chiều kim đồng hồ bằng cách sử dụng lệnh imrotate (tên tệp, 'góc')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 270); trục (tay cầm.axes1); imshow (aclock);
8. Xoay hình ảnh ngược chiều kim đồng hồ
Trong chức năng 'ngược chiều kim đồng hồ' , hãy sao chép và dán đoạn mã dưới đây để xoay hình ảnh theo hướng ngược chiều kim đồng hồ bằng cách sử dụng lệnh imrotate (tên tệp, 'góc')
a = getappdata (0, 'a'); aclock = a; aclock = imrotate (aclock, 90); trục (tay cầm.axes1); imshow (aclock);
Chạy mã GUI MATLAB để xử lý hình ảnh
Bây giờ, hãy nhấp vào nút 'RUN' để chạy mã đã chỉnh sửa trong tệp.m
MATLAB có thể mất vài giây để phản hồi, không nhấp vào bất kỳ nút GUI nào cho đến khi MATLAB hiển thị thông báo bận ở góc dưới bên trái như hình dưới đây,
Khi mọi thứ đã sẵn sàng, hãy nhập hình ảnh từ PC bằng cách nhấp vào nút 'Tải lên Hình ảnh'. Bây giờ, bạn sẽ có thể chuyển đổi hoặc xoay hình ảnh bằng cách nhấp vào bất kỳ nút nào tương ứng. Bảng bên dưới sẽ hiển thị cho bạn nhiệm vụ chúng tôi đang thực hiện khi nhấp vào bất kỳ nút cụ thể nào:
Kết quả khi nhấp vào mỗi nút sẽ được hiển thị bên dưới,
Hoạt động hoàn chỉnh của từng nút được minh họa trong Video bên dưới.
Bạn thậm chí có thể thực hiện mức xử lý hình ảnh nâng cao với Hộp công cụ xử lý hình ảnh mà bạn có thể mua từ trang web chính thức của MATHWORKS, một số thao tác ở mức nâng cao được liệt kê bên dưới:
- Phép toán hình học
- Chặn hoạt động
- Lọc tuyến tính và thiết kế bộ lọc
- Biến đổi
- Phân tích và nâng cao hình ảnh
- Hoạt động hình ảnh nhị phân