Các hàm trong xử lý ảnh

Chia sẻ trang này

Lượt xem: 53,506

  1. Các hàm trong xử lý ảnh

    By:Lu ROmin: 24 Tháng mười 2015 Administrator Staff Member

    Tham gia ngày:25 Tháng bảy 2014Bài viết:481Đã được thích:115

    Trong phần này chúng ta sẽ tìm hiểu về các hàm xử lý ảnh trong matlab. Như chúng ta đã biết, matlab là một ngôn ngữ rất mạnh và hỗ trợ rất tốt các thao tác làm việc trên ảnh. Vì vậy việc sử dụng matlab cho các ứng dụng xử lý ảnh gần như là lựa chọn hàng đầu cho những ai muốn thực hiện các thuật toán xử lý trên phần mềm. Một số hàm cơ bản trong matlab:

    imread()
    imshow()
    imwrite()
    rgb2gray()
    imhist()
    imadjust()
    im2bw()

    a, Hàm imread()
    - Lênh imread() sẽ đọc một file thành một ma trận. Matlab trợ giúp rất nhiều định dạng đồ hoạ thông dụng chẳng hạn: BMP, GIF, JPEG, PNG, TIFF … Để biết thêm các kiểu gọi hàm và tham số truyền vào, xem trợ giúp online của Matlab.

    img = imread('ImageProcessing_1/BerkeleyTower.png');
    >> size(img)
    ans =
       499   748     3

    - Ví dụ trên chúng ta khi đọc một file ảnh bằng imread() sẽ có kết quả là một ma trận 499x748 với 3 thành phần màu cơ bản RGB . Các ma trận trông như thế sau:

     24   40   73  108  129  108   96  100  109  114  108  109   62
       29   56   97  107  110  104  103  105  106  110  110  111  105
       ...
        3    2    2    1    0    0    1    1    0    1    2    4    2
        1    0    1    3    2    0    0    0    1    1    2    1    0
       ...

    file ảnh cho bạn nào cần : BerkeleyTower.png.

    b, Hàm imshow() và imagesc()

    - Để hiển thị hình ảnh trong matlab ta dùng 2 lệnh sau imshow() imagesc(). Lệnh imshow () cho chúng ta một hình ảnh trong định dạng tiêu chuẩn là 8-bit, giống như trong một trình duyệt web. Lệnh imagesc () hiển thị các hình ảnh trên các trục đồ thị với giá trị min là màu đen và giá trị tối đa là màu trắng.

    img = imread('ImageProcessing_1/BerkeleyTower.png');
    imshow(img);
    imagesc(img);
    

    Dùng imshow():

    Các hàm trong xử lý ảnh

    Dùng lệnh imagesc():

    Các hàm trong xử lý ảnh

    - Chúng ta có thể kiểm tra giá trị RGB với (x,y) là tọa độ một điểm ảnh:
    + Chọn "Data Cursor" trên thanh công cụ.
    + Nhấn vào bất kì điểm nào ta sẽ có giá trị của từng điểm đó.

    Các hàm trong xử lý ảnh

    ** Chú ý mỗi điểm ảnh là một vector 3 chiều với các giá trị trong khoảng [0-255]. 3 thông số hiển thị là giá trị của RGB.
    - Trên thực tế, một hình ảnh là một hình ảnh kết hợp của 3 màu RGB. Vì vậy, chúng ta có thể hiển thị các thành phần RGB riêng của hình ảnh bằng cách sử dụng các lệnh sau đây:

    subplot(131);
    imagesc(img(:,:,1));
    title('Red');
    
    subplot(132);
    imagesc(img(:,:,2));
    title('Green');
    
    subplot(133);
    imagesc(img(:,:,3));
    title('Blue'); 

    Các hàm trong xử lý ảnh

    - Câu lệnh : colormap gray , làm cho tất các hình ảnh chuyển thành màu xám.
    Các hàm trong xử lý ảnh

    c, Hàm imwrite()
    - Để lưu một ảnh, chúng ta sử dụng câu lệnh imwrite(). Cấu trúc cơ bản nhất của imwrite() sẽ yêu cầu một biến ảnh và tên file. Nếu ta gộp một phần mở rộng trong tên file, Matlab sẽ nhận ra định dạng mong muốn từ nó.

    imwrite(blue_img, 'Blue4_BerkeleyTower.png', 'png');

    Xem nhiều ảnh
    - Nếu ta chỉ ra một file mà chứa nhiều ảnh, hàm imview chỉ hiển thị ảnh đầu tiên trong file đó. Để xem tất cả các ảnh trong file, sử dụng hàm imread để nhập mỗi ảnh vào trong không gian làm việc của Matlab sau đó gọi hàm imview nhiều lần để hiển thị mỗi ảnh riêng biệt.

    d, Hàm rgb2gray()

    img = imread('ImageProcessing_1/BerkeleyTower.png');
    gray = rgb2gray(img);
    imshow(gray);

    Các hàm trong xử lý ảnh

    >> size(gray)
    ans =
       499   748

    - Lệnh rgb2gray() chuyển đổi hình ảnh RGB thành trắng đen bằng cách loại bỏ các thông tin màu sắc và độ bão hòa nhưng vẫn giữ độ sáng.

    e, Hàm imhist()
    - Hiển thị một biểu đồ của dữ liệu hình ảnh. imhist(img, n) sẽ hiển thị một biểu đồ với n bins cho cường độ hình ảnh trên một colorbar grayscale có độ dài n. Nếu chúng ta bỏ qua tham số, imhist() sử dụng một giá trị mặc định n = 256 nếu là một hình ảnh grayscale, hoặc n = 2 nếu là một hình ảnh nhị phân.

    img = imread('ImageProcessing_1/BerkeleyTower.png');
    gray = rgb2gray(img);
    imhist(gray);

    Các hàm trong xử lý ảnh

    f, Hàm imadjust()
    - imadjust() điều chỉnh giá trị cường độ hình ảnh. Câu lệnh này làm tăng độ tương phản của hình ảnh đầu ra.

    img = imread('ImageProcessing_1/Rachmaninoff.jpg');
    gray = rgb2gray(img);
    adj_img = imadjust(gray, [0.3,0.7],[]);
    
    subplot(121);
    imshow(gray);
    title('input');
    
    subplot(122);
    imshow(adj_img);
    title('adjusted'); 

    Các hàm trong xử lý ảnh

    file ẢNH : Rachmaninoff.jpg.

    g, Hàm im2bw()
    - im2bw() chuyển đổi các hình ảnh màu xám sang một hình nhị phân. Hay tạo một ảnh nhị phân từ một ảnh cường độ, ảnh chỉ số hay ảnh RGB trên cơ sở của ngưỡng ánh sáng.

    img = imread('ImageProcessing_1/Rachmaninoff.jpg');
    gray = rgb2gray(img);
    adj_img = imadjust(gray, [0.3,0.7],[]);
    bw_img = im2bw(adj_img);
    
    subplot(121);
    imshow(adj_img);
    title('input image');
    
    subplot(122);
    imshow(bw_img);
    title('binary image'); 

    Các hàm trong xử lý ảnh

    *** Một số câu lệnh khác:
    · dither: Tạo một ảnh nhị phân từ một ảnh cường độ đen trắng bằng cách trộn, tạo một ảnh chỉ số từ một ảnh RGB bằng cách trộn (dither).
    · gray2id: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng.
    · grayslice: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng bằng cách đặt ngưỡng.
    · im2bw: Tạo một ảnh nhị phân từ một ảnh cường độ, ảnh chỉ số hay ảnh RGB trên cơ sở của ngưỡng ánh sáng.
    · ind2gray: Tạo một ảnh cường độ đen trắng từ một ảnh chỉ số.
    · ind2rgb: Tạo một ảnh RGB từ một ảnh chỉ số.
    · mat2gray: Tạo một ảnh cường độ đen trắng từ dữ liệu trong một ma trận bằng cách lấy tỉ lệ giữ liệu.
    · rgb2ind: Tạo một ảnh chỉ số từ một ảnh RGB.

    Bài viết cùng chủ đề:

    • Matlab trong xử lý ảnh: RGB VÀ bảng màu 25 Tháng mười 2015
    • Matlab trong xử lý ảnh: Các phép... 21 Tháng sáu 2016
    • Matlab cơ bản 10: Định nghĩa hàm... 18 Tháng mười 2015
    • Matlab trong xử lý ảnh: Bộ lọc đạo... 30 Tháng sáu 2016
    • Matlab trong xử lý ảnh: Cơ bản ảnh... 1 Tháng mười một 2015
    • MATLAB cơ bản 9: Vecto (mảng) với... 12 Tháng chín 2015
    • Matlab Simulink cơ bản phần 5: Các... 4 Tháng bảy 2016
    • Matlab cơ bản: Giới thiệu về MATLAB 7 Tháng chín 2015
    • MATLAB cơ bản : Chuỗi Fourier & Biến... 13 Tháng chín 2015
    • Matlab trong xử lý ảnh: Các kiểu ảnh... 24 Tháng mười 2015

    TSM_OutDoor thích bài này.

Các hàm trong xử lý ảnh