Cách Biểu Diễn Hình Ảnh trong MATLAB –Biểu Diễn Ảnh Nhị Phân, Ảnh Trắng & Màu
Hướng dẫn MATLAB: Hiểu về Loại Ảnh và Các Hàm Cơ Bản
Trong chương này, bạn sẽ hiểu về các loại ảnh khác nhau và các hàm cơ bản quan trọng. Học cách đọc và hiển thị ảnh trong MATLAB, cùng cách tạo một tệp M. Sự hiểu biết về những cơ bản này là nền tảng vững chắc để nâng cao kỹ năng xử lý ảnh thông qua MATLAB.
Kỹ thuật, bất cứ thứ gì chúng ta phân loại là một bức tranh, đều là một Hình ảnh. Chúng tôi đã nói về cơ bản của xử lý ảnh trong bài viết đầu tiên, hôm nay chúng ta sẽ tập trung vào biểu diễn kỹ thuật của hình ảnh.
Các Loại Hình Ảnh
Mọi màu sắc xung quanh chúng ta đều có thể được tạo ra bằng cách kết hợp các thành phần màu đỏ, xanh lá cây và lam theo tỉ lệ khác nhau. Do đó, mọi màu trên thế giới có thể được mô tả duy nhất thông qua giá trị RGB, viết tắt của Đỏ (Red), Xanh lá cây (Green) và Lam (Blue). Mỗi giá trị trong bộ ba này nằm trong khoảng từ 0 đến 255, với 0 thường đại diện cho không có thành phần màu nào của màu đó và 255 thường đại diện cho toàn bộ thành phần màu.
Ví dụ, màu đỏ thuần khiết có giá trị RGB là [255 0 0], màu trắng thuần khiết có giá trị [255 255 255], màu đen thuần khiết có giá trị [0 0 0], và một màu nào đó có giá trị RGB là [55 162 170].
Trong MATLAB, một hình ảnh được lưu trữ dưới dạng ma trận 2D (kích thước mxn), trong đó mỗi phần tử của ma trận đại diện cho độ sáng/màu sắc của pixel cụ thể đó. Do đó, đối với một hình ảnh nhị phân, giá trị của mỗi phần tử trong ma trận là 0 hoặc 1, và đối với một hình ảnh xám, mỗi giá trị nằm trong khoảng từ 0 đến 255. Một hình ảnh màu được lưu trữ dưới dạng ma trận mxnx3, trong đó mỗi phần tử là giá trị RGB của pixel cụ thể (vì vậy nó là một ma trận 3D). Bạn có thể xem xét nó như là ba ma trận 2D cho độ sáng màu đỏ, xanh lá cây và lam.
imread(): Để đọc hình ảnh và lưu vào một ma trận.
Cú pháp: IM = imread('tên_tệp')
Nếu tệp ảnh nằm trong thư mục hiện tại, bạn chỉ cần viết tên tệp, nếu không, bạn cần viết đường dẫn đầy đủ. Tên tệp phải có đuôi mở rộng (ví dụ: .jpg, .bmp, ...). Có một số hình ảnh mặc định của MATLAB như 'peppers.png', 'cameraman.tif', v.v. Bạn có thể thử đọc chúng như sau:
im = imread('peppers.png');im = imread('peppers.png');
Luôn khuyến khích sử dụng dấu chấm phẩy (;) ở cuối câu lệnh khi đọc một hình ảnh, nếu không... hãy thử để xem điều gì xảy ra!
imshow(): Hiển thị hình ảnh. Cú pháp:
imshow('tên_tệp') imshow('tên_tệp')
hoặc
imshow(im)imshow(im)
Ví dụ:
imshow('cameraman.tif');imshow('cameraman.tif');
Bây giờ hãy tạo một hình ảnh của riêng bạn, thử điều này:
a(1,1) = 0;
for i = 1:200
for j = 1:200
a(i+1,j+1) = 1 - a(i,j);
end
end
imshow(a);a(1,1) = 0; for i = 1:200 for j = 1:200 a(i+1,j+1) = 1 - a(i,j); end end imshow(a);
Hãy thử tạo nhiều loại hình ảnh khác nhau như vậy để làm quen với các lệnh đã học cho đến nay.
Công cụ Dữ liệu: Để xem giá trị màu sắc trong cửa sổ hình ảnh, điều này có thể thực hiện thông qua Tools > Data Cursor hoặc chọn từ thanh công cụ, và nhấp chuột trên bất kỳ điểm nào trong hình ảnh. Bạn có thể thấy giá trị RGB của pixel tại vị trí (X, Y).
Một tùy chọn tốt hơn của Công cụ Dữ liệu là chức năng imtool(). Gõ:
imtool('peppers.png');
imtool('peppers.png');
Và xem thông tin pixel ở góc dưới bên trái khi bạn di chuyển con trỏ chuột qua các pixel khác nhau.
Bây giờ, trước khi chúng ta chuyển sang bài viết tiếp theo, hãy đàm phán nhỏ trong bài viết này và nói về một số tài nguyên MATLAB sẽ được sử dụng rộng rãi trong các bài viết sắp tới.
Trong MATLAB, có một cơ chế cho phép bạn thực hiện nhiều lệnh bằng một câu lệnh duy nhất. Ở đây, nhóm lệnh được lưu trữ dưới dạng một tệp MATLAB (phần mở rộng là .m).
Chúng ta đã lưu tệp m với tên "test.m". Bây giờ khi bạn gõ
>> test>> test
Và trong cửa sổ lệnh MATLAB, tất cả các lệnh trước đó sẽ được thực hiện.
Bình luận: Như chúng ta có bình luận trong C/C++/Java sử dụng dấu gạch chéo kép (//), trong MATLAB, chúng ta sử dụng ký hiệu % để viết bình luận, tức là các câu lệnh không được xem xét để thực hiện. Bạn có thể thấy bình luận hiển thị màu xanh lá cây trong ảnh chụp màn hình ở trên.
Các hàm, như một số bạn có thể biết, được viết để tổ chức mã nguồn một cách hiệu quả và làm cho việc sửa lỗi dễ dàng hơn. Tập hợp các câu lệnh trong một hàm có thể được thực hiện khi cần bằng cách gọi nó, từ đó tránh lặp lại. Dữ liệu cần thiết trong hàm có thể được truyền dưới dạng đối số và sau đó giá trị cần thiết có thể được trả về. Bạn có thể trả về bất kỳ số lượng giá trị nào và chúng cũng có thể là ma trận.
Hotline: 0979 466 469