Tổng hợp các công cụ xử lý hình ảnh phổ biến

MCTT Việt Nam

Thành viên
Tham gia
13/7/2021
Bài viết
21
Xử lý hình ảnh là kỹ thuật cốt lõi của thị giác máy tính, giúp phát triển nhiều ứng dụng thực tế như robot, ô tô tự lái và camera thông minh, phát hiện đối tượng,…. Xử lý ảnh cho phép chuyển đổi và thao tác trên hàng nghìn ảnh cùng lúc, từ đó trích xuất những thông tin chi tiết và quan trọng. Bài viết này sẽ cùng bạn khám phá về xử lý hình ảnh bằng Python: từ thuật toán, công cụ đến phương pháp hữu dụng. Cùng lưu lại và tham khảo thêm nhé!

Các công cụ xử lý hình ảnh​

1. OpenCV​

OpenCV là viết tắt của Open Source Computer Vision Library. Thư viện này bao gồm khoảng hơn 2000 thuật toán được tối ưu hóa hữu ích cho thị giác máy tính và học máy. Có một số cách bạn có thể sử dụng OpenCV trong xử lý hình ảnh như sau:
  • Chuyển đổi hình ảnh từ không gian màu này sang không gian màu khác, chẳng hạn như giữa BGR và HSV, BGR và màu xám, v.v.
  • Thực hiện ngưỡng trên hình ảnh, như, ngưỡng đơn giản, ngưỡng thích ứng, v.v.
  • Làm mịn hình ảnh, như, áp dụng các bộ lọc tùy chỉnh cho hình ảnh và làm mờ hình ảnh.
  • Thực hiện các phép toán hình thái trên ảnh.
  • Xây dựng hình kim tự tháp.
  • Trích xuất tiền cảnh từ hình ảnh bằng thuật toán GrabCut.
  • Phân đoạn ảnh sử dụng thuật toán watershed.

2. Hình ảnh Scikit​

Scikit là một thư viện mã nguồn mở được sử dụng để tiền xử lý hình ảnh. Nó sử dụng học máy với các chức năng tích hợp và có thể thực hiện các hoạt động phức tạp trên hình ảnh chỉ với một vài chức năng.

Scikit hoạt động với các mảng numpy và là một thư viện khá đơn giản ngay cả đối với những người mới làm quen với python. Một số thao tác có thể được thực hiện bằng hình ảnh scikit là:
  • Để triển khai các hoạt động tạo ngưỡng, hãy sử dụng phương thức try_all_threshold () trên hình ảnh. Nó sẽ sử dụng bảy thuật toán ngưỡng toàn cầu. Đây là trong mô-đun bộ lọc.
  • Để thực hiện phát hiện cạnh, hãy sử dụng phương thức sobel () trong mô-đun bộ lọc. Phương pháp này yêu cầu hình ảnh thang độ xám 2D làm đầu vào, vì vậy chúng ta cần chuyển đổi hình ảnh sang thang độ xám.
  • Để thực hiện làm mịn gaussian, hãy sử dụng phương thức gaussian () trong mô-đun bộ lọc.
  • Để áp dụng cân bằng biểu đồ, hãy sử dụng mô-đun phơi sáng
  • Để áp dụng cân bằng biểu đồ bình thường cho hình ảnh gốc, hãy sử dụng phương thức equalize_hist ()
  • Để áp dụng cân bằng thích ứng, hãy sử dụng phương thức equalize_adapthist ().
  • Để xoay hình ảnh, hãy sử dụng hàm xoay () trong mô-đun biến đổi.
  • Để thay đổi tỷ lệ hình ảnh, hãy sử dụng hàm rescale () từ mô-đun biến đổi.
  • Để áp dụng các phép toán hình thái, hãy sử dụng hàm binary_e wear () và binary_dilation () trong mô-đun hình thái học.

3. PIL / PILLOW​

PIL là viết tắt của Python Image Library. Đây là một trong những thư viện mạnh mẽ, hỗ trợ một loạt các định dạng hình ảnh như PPM, JPEG, TIFF, GIF, PNG và BMP.

Nó có thể giúp bạn thực hiện một số thao tác trên hình ảnh như xoay, thay đổi kích thước, cắt xén, chia tỷ lệ màu xám, v.v. Hãy xem qua một số thao tác đó
  • Để tải một hình ảnh, hãy sử dụng phương thức open ().
  • Để hiển thị một hình ảnh, hãy sử dụng phương thức show ().
  • Để biết định dạng tệp, hãy sử dụng thuộc tính format
  • Để biết kích thước của hình ảnh, hãy sử dụng thuộc tính size
  • Để biết về thuộc tính chế độ sử dụng định dạng pixel.
  • Để lưu tệp hình ảnh sau khi xử lý, hãy sử dụng phương thức save (). Pillow lưu tệp hình ảnh ở định dạng png.
  • Để thay đổi kích thước hình ảnh, hãy sử dụng phương thức resize () nhận hai đối số là chiều rộng và chiều cao.
  • Để cắt hình ảnh, hãy sử dụng phương thức crop () lấy một đối số dưới dạng một bộ hộp xác định vị trí và kích thước của vùng được cắt.
  • Để xoay hình ảnh, hãy sử dụng phương thức xoay () nhận một đối số là số nguyên hoặc số thực thể hiện mức độ xoay.
  • Để lật hình ảnh, hãy sử dụng phương thức biến đổi () lấy một đối số trong số các đối số sau: Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, Image.ROTATE_90, Image.ROTATE_180, Image.ROTATE_270.

4. NumPy​

Với thư viện này, bạn cũng có thể thực hiện các kỹ thuật hình ảnh đơn giản, chẳng hạn như lật hình ảnh, trích xuất các tính năng và phân tích chúng.

Hình ảnh có thể được biểu diễn bằng các mảng đa chiều và do đó kiểu của chúng là NdArrays. Hình ảnh màu là một mảng có 3 chiều. Bằng cách cắt mảng đa chiều, các kênh RGB có thể được tách ra.

Dưới đây là một số thao tác có thể được thực hiện bằng NumPy trên hình ảnh (hình ảnh được tải trong một biến có tên test_img bằng cách sử dụng imread).
  • Để lật hình ảnh theo hướng dọc, hãy sử dụng np.flipud (test_img).
  • Để lật hình ảnh theo hướng ngang, hãy sử dụng np.fliplr (test_img).
  • Để đảo ngược hình ảnh, hãy sử dụng test_img [:: – 1] (hình ảnh sau khi lưu trữ dưới dạng mảng numpy được đặt tên là <img_name>).
  • Để thêm bộ lọc vào hình ảnh, bạn có thể làm như sau:
Ví dụ: np.where (test_img> 150, 255, 0), tức là trong hình này nếu tìm thấy bất kỳ thứ gì bằng 150, thì hãy thay thế nó bằng 255, nếu không thì 0.

Bạn cũng có thể hiển thị các kênh RGB riêng biệt. Nó có thể được thực hiện bằng cách sử dụng đoạn mã này:

Để có được kênh màu đỏ, hãy thực hiện test_img [:,:, 0], để có được kênh màu xanh lá cây, hãy thực hiện test_img [:,:, 1] và để có được kênh màu xanh lam, hãy thực hiện test_img [:,:, 2].

5. Mahotas​

Đây là một thư viện xử lý hình ảnh và thị giác máy tính và có hơn 100 chức năng. Nhiều thuật toán của nó được thực hiện bằng C ++. Bản thân Mahotas là một mô-đun độc lập, tức là nó có phụ thuộc tối thiểu.

Hiện tại, Mahotas chỉ phụ thuộc vào trình biên dịch C ++ để tính toán số, không cần mô-đun NumPy, trình biên dịch thực hiện tất cả công việc của nó.

Dưới đây là tên của một số thuật toán đáng chú ý có sẵn trong Mahotas:
  • Watershed (h ttps://mahotas.readthedocs.io/en/latest/distance.html)
  • Hoạt động Hình thái (h ttps://mahotas.readthedocs.io/en/latest/morphology.html)
  • Nhấn & bỏ lỡ, làm mỏng. (h ttps://mahotas.readthedocs.io/en/latest/api.html#mahotas.hitmiss)
  • Chuyển đổi không gian màu (h ttps://mahotas.readthedocs.io/en/latest/color.html)
  • Các tính năng mạnh mẽ được tăng tốc (SURF), một dạng tính năng cục bộ.
  • (h ttps://mahotas.readthedocs.io/en/latest/surf.html)
  • Ngưỡng. (h ttps://mahotas.readthedocs.io/en/latest/thresholding.html)
  • Chuyển đổi. (h ttps://mahotas.readthedocs.io/en/latest/api.html)
  • Nội suy Spline (h ttps://mahotas.readthedocs.io/en/latest/api.html)
  • SLIC superpixels. (h ttps://www.pyimagesearch.com/2014/07/28/a-slic-superpixel-tutorial-using-python/)
Hãy xem xét một số thao tác có thể được thực hiện bằng Mahotas:
  • Để đọc một hình ảnh, hãy sử dụng phương thức imread ().
  • Để tính giá trị trung bình của hình ảnh, hãy sử dụng phương thức mean ().
  • Độ lệch tâm của một hình ảnh đo độ dài ngắn nhất của các đường đi từ một đỉnh v cho trước đến bất kỳ đỉnh w nào khác của một đồ thị liên thông.
  • Để tìm độ lệch tâm của hình ảnh, hãy sử dụng phương thức eccentricity () trong mô-đun tính năng.
  • Đối với phép giãn và phép co trên hình ảnh sử dụng phương thức dilate () và xói mòn () trong mô-đun morph.
  • Để tìm cực đại cục bộ của hình ảnh, hãy sử dụng phương thức locmax ().
Trên đây là những thông tin bạn đọc cần biết về các công cụ xử lý ảnh phổ biến, hi vọng rằng sẽ hỗ trợ bạn trong việc tìm hiểu và nâng cao kiến thức về xử lý ảnh. Đừng quên theo dõi những bài viết mới nhất của chúng tôi trong thời gian sắp tới nhé.
 
×
Quay lại
Top Bottom