Rate this post

Thay đổi kích thước hình ảnh là một kỹ thuật cơ bản nhưng quan trọng trong xử lý hình ảnh. Nó không chỉ giúp giảm kích thước của hình ảnh cho lưu trữ và truyền tải dễ dàng hơn mà còn cần thiết trong việc chuẩn hóa hình ảnh cho việc phân tích và xử lý tiếp theo. Điều này đặc biệt quan trọng trong các ứng dụng như học máy, nơi mà hình ảnh cần được đưa về một kích thước chuẩn trước khi đưa vào mô hình.

Bài viết này sẽ hướng dẫn bạn qua các bước cần thiết để thay đổi kích thước hình ảnh sử dụng OpenCV. Chúng ta sẽ xem xét cách sử dụng các hàm cơ bản của OpenCV để thực hiện tác vụ này, cũng như các vấn đề liên quan như giữ nguyên tỷ lệ khung hình và chọn phương pháp lọc ảnh phù hợp. Mục tiêu là cung cấp kiến thức cần thiết để bạn có thể tự tin thay đổi kích thước hình ảnh trong các dự án của mình.

Tại sao cần thay đổi kích thước hình ảnh?

Thay đổi kích thước hình ảnh là một hoạt động phổ biến trong xử lý ảnh và có nhiều lý do để thực hiện điều này:

  1. Hiển thị tốt trên các thiết bị khác nhau: Kích thước màn hình của các thiết bị đa dạng như máy tính, điện thoại di động và máy tính bảng khác nhau. Thay đổi kích thước hình ảnh giúp đảm bảo rằng hình ảnh sẽ hiển thị đẹp và phù hợp trên các thiết bị này mà không bị méo hay bị cắt bớt phần quan trọng.
  2. Tăng tốc độ tải trang: Kích thước lớn của hình ảnh có thể làm giảm tốc độ tải trang, đặc biệt trên các kết nối mạng chậm hoặc thiết bị có phần cứng yếu. Thay đổi kích thước hình ảnh giúp giảm dung lượng file và cải thiện tốc độ tải trang, cung cấp trải nghiệm người dùng tốt hơn và tăng khả năng tương tác trên trang web.
  3. Tiết kiệm lưu trữ và băng thông: Kích thước lớn của hình ảnh có thể chiếm nhiều không gian lưu trữ và tăng tiêu thụ băng thông khi người dùng truy cập vào trang web. Thay đổi kích thước hình ảnh giúp giảm dung lượng file, tiết kiệm lưu trữ và giảm tải trọng băng thông của trang web.
  4. Tương thích với các yêu cầu kỹ thuật: Có thể có các yêu cầu kỹ thuật cụ thể về kích thước hình ảnh cho một ứng dụng hoặc một nền tảng cụ thể. Thay đổi kích thước hình ảnh giúp đáp ứng các yêu cầu này và đảm bảo tính tương thích của hình ảnh với hệ thống hoặc ứng dụng mà nó được sử dụng.

Tóm lại, thay đổi kích thước hình ảnh là một hoạt động quan trọng để đảm bảo hiển thị đẹp, tối ưu hóa tốc độ tải trang và tăng tính tương thích của hình ảnh trên các thiết bị và nền tảng khác nhau.

Xem thêm OpenCV là gì? tìm hiểu OpenCV

Cách thực hiện thay đổi kích thước hình ảnh bằng OpenCV

Để thực hiện thay đổi kích thước hình ảnh bằng OpenCV, bạn có thể sử dụng các hàm và phương thức của thư viện này.

Sử dụng hàm resize

Cú pháp và tham số:

  • Cú pháp cơ bản của hàm resize trong OpenCV là cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]), nơi src là hình ảnh nguồn, dsize là kích thước mới của hình ảnh. Tham số interpolation quyết định phương pháp lọc sẽ được sử dụng khi thay đổi kích thước.

Ví dụ minh họa:

  • Ví dụ, để thay đổi kích thước một hình ảnh sang kích thước 640×480, bạn có thể sử dụng: resized_image = cv2.resize(src_image, (640, 480), interpolation=cv2.INTER_LINEAR). Trong trường hợp này, INTER_LINEAR là phương pháp lọc được sử dụng.

Xử lý các vấn đề liên quan đến tỷ lệ khung hình

Giữ nguyên tỷ lệ khung hình:

  • Để giữ nguyên tỷ lệ khung hình khi thay đổi kích thước, cần tính toán tỷ lệ giữa kích thước mới và kích thước gốc, sau đó áp dụng tỷ lệ này cho cả chiều rộng và chiều cao.

Điều chỉnh kích thước không đồng đều:

  • Trong trường hợp bạn muốn thay đổi kích thước hình ảnh mà không giữ nguyên tỷ lệ khung hình, bạn có thể chỉ định một kích thước mới cụ thể mà không cần quan tâm đến tỷ lệ gốc.

Kỹ thuật lọc ảnh khi thay đổi kích thước

  • Việc lựa chọn phương pháp lọc phù hợp là quan trọng khi thay đổi kích thước hình ảnh. OpenCV cung cấp nhiều lựa chọn như INTER_LINEAR cho phép phóng to, INTER_AREA cho thu nhỏ, và INTER_CUBIC cho chất lượng cao hơn nhưng tốn nhiều tài nguyên hơn. Lựa chọn này phụ thuộc vào yêu cầu về chất lượng và hiệu suất.

Dưới đây là một ví dụ về cách thực hiện điều này trong Python:

import cv2

# Đọc hình ảnh từ tệp
image = cv2.imread("input.jpg")

# Thay đổi kích thước hình ảnh
new_width = 800
new_height = 600
resized_image = cv2.resize(image, (new_width, new_height))

# Lưu hình ảnh đã thay đổi kích thước
cv2.imwrite("output.jpg", resized_image)

Trong ví dụ trên, chúng ta sử dụng hàm cv2.imread() để đọc hình ảnh từ tệp. Sau đó, sử dụng hàm cv2.resize() để thay đổi kích thước hình ảnh. Chúng ta truyền vào đối số đầu tiên là hình ảnh gốc, và đối số thứ hai là kích thước mới mong muốn (theo độ rộng và chiều cao). Cuối cùng, chúng ta sử dụng cv2.imwrite() để lưu hình ảnh đã thay đổi kích thước vào tệp.

Lưu ý rằng OpenCV cung cấp nhiều phương thức khác để thay đổi kích thước hình ảnh, ví dụ như cv2.resize() có thể chấp nhận tham số fxfy để thay đổi tỉ lệ kích thước mà không cần chỉ định kích thước cụ thể. Bạn có thể tùy chỉnh ví dụ trên hoặc tìm hiểu thêm trong tài liệu OpenCV để thích nghi với nhu cầu cụ thể của mình.

Xem thêm Kích thước của page table trong hệ điều hành

Ứng dụng thực tế

Thay đổi kích thước hình ảnh cho phân loại hình ảnh

Trong lĩnh vực học máy và thị giác máy tính, việc thay đổi kích thước hình ảnh là bước quan trọng. Đối với các mô hình phân loại hình ảnh, mỗi hình ảnh đầu vào cần được chuẩn hóa về một kích thước cố định. Điều này đảm bảo rằng mô hình có thể học từ dữ liệu một cách hiệu quả mà không bị ảnh hưởng bởi biến thể về kích thước. Ví dụ, trong mô hình nhận diện khuôn mặt, tất cả hình ảnh được thay đổi kích thước để khuôn mặt chiếm một phần tương tự trong mỗi bức ảnh.

Tối ưu hóa hiệu suất lưu trữ và xử lý

Thay đổi kích thước hình ảnh cũng giúp tối ưu hóa bộ nhớ lưu trữ và tốc độ xử lý. Trong các ứng dụng web và di động, việc giảm kích thước hình ảnh không chỉ giúp tiết kiệm không gian lưu trữ mà còn cải thiện thời gian tải trang và giảm băng thông sử dụng. Điều này đặc biệt quan trọng đối với các trang web có lượng truy cập lớn và ứng dụng chia sẻ hình ảnh.

Ví dụ về thay đổi kích thước trong xử lý hàng loạt

Xử lý hàng loạt là một kỹ thuật mạnh mẽ khác, nơi hàng trăm hoặc hàng ngàn hình ảnh có thể được thay đổi kích thước cùng một lúc. Điều này thường được thấy trong việc chuẩn bị dữ liệu cho các nhiệm vụ học máy hoặc khi cần chuyển đổi kích thước hình ảnh trên quy mô lớn cho các bộ sưu tập ảnh. Ví dụ, một studio ảnh có thể sử dụng kỹ thuật này để chuyển đổi kích thước ảnh từ định dạng RAW sang định dạng phù hợp hơn cho việc chỉnh sửa và chia sẻ trực tuyến.

Ví dụ thay đổi kích thước hình ảnh

Ví dụ 1:

Đầu ra:

Thay đổi kích thước của hình ảnh có nghĩa là thay đổi kích thước của hình ảnh, chiều rộng hoặc chiều cao của hình ảnh cũng như cả hai. Ngoài ra, tỷ lệ khung hình của hình ảnh gốc có thể được giữ lại bằng cách thay đổi kích thước hình ảnh. OpenCV cung cấp hàm cv2.resize () để thay đổi kích thước hình ảnh. Cú pháp được đưa ra là:

Thông số

  • src – nguồn / hình ảnh đầu vào (bắt buộc).
  • dsize – kích thước mong muốn cho hình ảnh đầu ra (bắt buộc)
  • fx – Hệ số tỷ lệ dọc theo trục hoành. (tùy chọn)
  • fy – Hệ số tỷ lệ dọc theo trục tung.
  • Interpolation (tùy chọn) – Flag này sử dụng các phương pháp sau:
    • INTER_NEAREST – A nearest-interpolation INTER_AREA – lấy mẫu lại bằng cách sử dụng quan hệ vùng pixel.
    • INTER_CUBIC – Phép nội suy hai chiều trên vùng lân cận 4 × 4 pixel.
    • INTER_LANCOZS4 – Nội suy Lanczos trên vùng lân cận 8 × 8 pixel

Ví dụ 2:

Có một số cách để thay đổi kích thước hình ảnh. Dưới đây là một số ví dụ để thực hiện thao tác thay đổi kích thước:

  1. Giữ lại tỷ lệ khung hình (tỷ lệ chiều cao trên chiều rộng của hình ảnh được giữ lại)
    • Downscale (Giảm kích thước của hình ảnh)
    • Nâng cấp (Tăng kích thước của hình ảnh)
  2. Không bảo toàn Tỷ lệ khung hình
    • Chỉ thay đổi kích thước chiều rộng
    • Chỉ thay đổi kích thước chiều cao
  3. Thay đổi kích thước chiều rộng và chiều cao được chỉ định, Giữ nguyên tỷ lệ khung hình

Downscale with resize()

Đầu ra:

Trong ví dụ trên, biến scale_per chứa phần trăm hình ảnh cần được chia tỷ lệ. Giá trị <100 được sử dụng để giảm tỷ lệ hình ảnh được cung cấp. Chúng tôi sẽ sử dụng giá trị scale_per này cùng với kích thước của hình ảnh gốc để tính chiều rộng và chiều cao của hình ảnh đầu ra.

Xem thêm Cài đặt OpenCV: Hướng dẫn chi tiết

Upscale with resize()

Đầu ra:

Thay đổi tỉ lệ khung hình

+ Chỉ thay đổi kích thước chiều rộng

Trong ví dụ dưới đây, chúng tôi đã cung cấp một giá trị cụ thể theo pixel cho chiều rộng và chiều cao sẽ không bị ảnh hưởng.

Đầu ra:

Xem thêm Background-size trong CSS

Thay đổi kích thước chiều cao

Trong ví dụ dưới đây, giá trị scale_per chứa phần trăm chiều cao phải được chia tỷ lệ hoặc chúng tôi có thể cung cấp giá trị cụ thể bằng pixel.

Đầu ra:

Thay đổi kích thước chiều rộng và chiều cao cụ thể

Đầu ra:

Xem thêm OpenCV template Matching

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now