/ / Làm chủ các kỹ thuật nâng cao hình ảnh với OpenCV

Làm chủ các kỹ thuật nâng cao hình ảnh với OpenCV

Tăng cường hình ảnh là một công cụ quan trọng cho các ứng dụng chỉnh sửa hình ảnh và thị giác máy tính. Nó nhằm mục đích cải thiện chất lượng của hình ảnh.


Bằng cách nâng cao chất lượng hình ảnh, độ chính xác và độ tin cậy của các kỹ thuật phân tích và xử lý hình ảnh có thể được nâng cao đáng kể. Điều này đặc biệt quan trọng trong các ứng dụng phát hiện, nhận dạng, phân đoạn và theo dõi đối tượng.

Tính năng nâng cao hình ảnh có thể hữu ích khi các yếu tố như điều kiện ánh sáng yếu, nhiễu cảm biến, nhòe chuyển động hoặc lỗi đường truyền đã làm giảm chất lượng hình ảnh.


Thiết lập môi trường của bạn

Bắt đầu bằng cách thiết lập môi trường Python, sau đó chạy lệnh đầu cuối sau để cài đặt thư viện OpenCV. Bạn sẽ sử dụng OpenCV để tải và xử lý hình ảnh ban đầu và để lưu hình ảnh nâng cao cuối cùng.

 pip install opencv-python

Bạn sẽ sử dụng Matplotlib để hiển thị hai hình ảnh. Cài đặt nó bằng lệnh này:

 pip install matplotlib

Cuối cùng, cài đặt NumPy, mà bạn sẽ sử dụng cho các hoạt động số bao gồm tạo bảng tra cứu để hiệu chỉnh gamma và xác định hạt nhân để làm sắc nét hình ảnh:

 pip install numpy 

Khi bạn đã cài đặt các thư viện này trong môi trường của mình, bạn đã sẵn sàng bắt đầu viết mã.

Nhập các thư viện cần thiết

Nhập các thư viện bạn đã cài đặt trước đó vào môi trường của mình:

 import cv2
import matplotlib.pyplot as plt
import numpy as np

Lưu ý rằng bạn nên nhập OpenCV dưới dạng cv2. Đây là một thông lệ tiêu chuẩn nhằm đảm bảo tính tương thích của mã và tính dễ hiểu đối với các nhà phát triển khác.

Đang tải và hiển thị ảnh gốc

Bắt đầu bằng cách tải hình ảnh gốc bằng cách sử dụng cv2.imread chức năng. Đây là hình ảnh đầu vào mà chương trình của bạn sẽ thực hiện các kỹ thuật nâng cao trên đó. Sau đó hiển thị nó bằng các hàm Matplotlib thích hợp:

 image = cv2.imread('example.jpg')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
plt.show()

Việc hiển thị ảnh gốc sẽ giúp bạn so sánh kết quả của chương trình sau này:

một con bướm trên một bông hoa hướng dương

Hình ảnh trên sẽ là đầu vào của chương trình.

Giảm nhiễu trong hình ảnh

Khử nhiễu là một kỹ thuật nhằm giảm nhiễu—biến dạng ngẫu nhiên—trong hình ảnh. Điều này dẫn đến đầu ra mượt mà hơn. OpenCV cung cấp fastNlMeansDenoisingColored chức năng cho mục đích này. Nó sử dụng thuật toán phương tiện phi cục bộ để loại bỏ nhiễu trong khi vẫn giữ được chi tiết hình ảnh.

 
denoised_image = cv2.fastNlMeansDenoisingColored(image, None, 10, 10, 7, 21)

Các fastNlMeansDenoisingColored hàm nhận một số tham số, bao gồm hình ảnh, cường độ bộ lọc, kích thước cửa sổ mẫu và kích thước cửa sổ tìm kiếm. Bạn có thể thử nghiệm với các giá trị khác nhau để có được kết quả mong muốn.

Độ tương phản kéo dài để cải thiện khả năng hiển thị chi tiết

Kéo dài tương phản còn được gọi là chuẩn hóa. Nó kéo dài các giá trị cường độ để kéo dài một phạm vi nhất định. Điều này lần lượt cải thiện khả năng hiển thị của các chi tiết trong hình ảnh.

Bạn có thể áp dụng kéo dài độ tương phản cho hình ảnh được khử nhiễu bằng OpenCV’s bình thường hóa chức năng:

 
contrast_stretched_image = cv2.normalize(denoised_image, None, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Cách làm sắc nét hình ảnh

Tính năng làm sắc nét hình ảnh giúp tăng cường các góc cạnh và chi tiết của hình ảnh, giúp cải thiện độ sắc nét của hình ảnh.

 
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
sharpened_image = cv2.filter2D(contrast_stretched_image, -1, kernel=kernel)

Đoạn mã trên tạo ra một ma trận hạt nhân làm nổi bật các cạnh và chi tiết trong hình ảnh. Các cv2.filter2D chức năng áp dụng hạt nhân cho hình ảnh được kéo dài tương phản, kết quả là làm sắc nét nó.

Điều chỉnh độ sáng để cải thiện độ phơi sáng

Điều chỉnh độ sáng kiểm soát độ sáng tổng thể của hình ảnh. Nó giúp làm cho hình ảnh hấp dẫn về mặt trực quan và được phơi sáng tốt.

 
brightness_image = cv2.convertScaleAbs(sharpened_image, alpha=1, beta=5)

Các cv2.convertScaleAbs chức năng điều chỉnh độ sáng của hình ảnh. Các chữ cái tham số kiểm soát độ tương phản, trong khi phiên bản thử nghiệm tham số kiểm soát độ sáng. Tăng phiên bản thử nghiệm giá trị tăng cường độ sáng của hình ảnh.

Áp dụng hiệu chỉnh Gamma để làm sáng hình ảnh

Một hình ảnh có thể xuất hiện quá sáng sau kỹ thuật điều chỉnh độ sáng. Hiệu chỉnh gamma điều chỉnh độ sáng và độ tương phản tổng thể của hình ảnh. Nó sửa ảnh có vẻ quá tối hoặc quá sáng.

 
gamma = 1.5
lookup_table = np.array([((i / 255.0) ** gamma) * 255 for i in np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(brightness_image, lookup_table)

Đoạn mã trên tạo một bảng tra cứu áp dụng chuyển đổi hiệu chỉnh gamma cho hình ảnh được điều chỉnh độ sáng. Các gamma giá trị kiểm soát việc điều chỉnh. Sử dụng các giá trị lớn hơn 1 để làm cho hình ảnh tối hơn và các giá trị nhỏ hơn 1 để làm cho hình ảnh sáng hơn.

Lưu và hiển thị hình ảnh nâng cao cuối cùng

Khi bạn đã áp dụng các kỹ thuật nâng cao ở trên, hãy lưu hình ảnh được xử lý cuối cùng vào một tệp.

 
cv2.imwrite('final_image.jpg', gamma_corrected_image)

Sau đó hiển thị đầu ra của chương trình bằng Matplotlib.

 
plt.imshow(cv2.cvtColor(gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title('Final Enhanced Image')
plt.show()

Hình ảnh nâng cao cuối cùng như sau:

một con bướm trên một bông hoa hướng dương

Tương lai của cải tiến hình ảnh

Tương lai của việc nâng cao hình ảnh là trong lĩnh vực trí tuệ nhân tạo. Các thuật toán học máy đang được đào tạo để tự động thực hiện các kỹ thuật nâng cao hình ảnh trên hình ảnh.

Các chương trình này xử lý từng hình ảnh một cách độc lập, vì vậy chúng áp dụng các giá trị kỹ thuật khác nhau cho các hình ảnh khác nhau.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *