Computer >> Máy Tính >  >> Lập trình >> Python

Xói mòn và hủy hoại hình ảnh bằng OpenCV trong Python

Trong bài toán này, chúng ta sẽ xem cách Python có thể thực hiện một số Hoạt động Hình thái như Xói mòn và Hẹp lỗ bằng cách sử dụng mô-đun OpenCV. Thư viện OpenCV chủ yếu được thiết kế cho thị giác máy tính. Nó là mã nguồn mở. Ban đầu nó được thiết kế bởi Intel. Điều này được sử dụng miễn phí theo giấy phép BSD nguồn mở.

Để sử dụng chức năng OpenCV, chúng tôi cần tải chúng xuống bằng cách sử dụng pip .

sudo pip3 install opencv-python

Hình ảnh xói mòn là gì và nó hoạt động như thế nào?

Trong xói mòn, nó làm xói mòn ranh giới của các vật thể ở tiền cảnh. Nó được sử dụng để loại bỏ tiếng ồn nhỏ màu trắng khỏi hình ảnh. Xói mòn cũng có thể được sử dụng để tách hai hình ảnh được kết nối.

  • Một nhân được hình thành từ một hình ảnh. Kernel là một ma trận, trong đó thứ tự là lẻ, như 3, 5, 7.

  • Một pixel của hình ảnh được chọn. Pixel này sẽ chỉ được chọn là 1 nếu tất cả các pixel trong nhân là 1. Nếu không, nó sẽ bị xói mòn.

  • Vì vậy, tất cả các pixel gần ranh giới sẽ bị loại bỏ.

  • Vì vậy, độ dày của đối tượng tiền cảnh giảm.

Dilation Image là gì và nó hoạt động như thế nào?

Trong Dilation, nó tăng diện tích đối tượng. Quá trình Xói mòn có thể loại bỏ các tiếng ồn trắng, nhưng nó cũng thu nhỏ hình ảnh của chúng ta, vì vậy sau khi Xói mòn, nếu thực hiện Quá trình khử nhiễu, chúng ta có thể nhận được kết quả loại bỏ nhiễu tốt hơn. Dilation cũng có thể được sử dụng để nối một số phần bị hỏng của một đối tượng.

  • Một nhân được hình thành từ một hình ảnh. Kernel là một ma trận, trong đó thứ tự là lẻ, như 3, 5, 7.

  • Một pixel của hình ảnh được chọn. Pixel này sẽ chỉ được chọn là 1 nếu tất cả các pixel trong nhân là 1.

  • Tăng vùng trắng hoặc kích thước của các đối tượng nền trước của hình ảnh.

Mã mẫu

import cv2 
import numpy as np
input_image = cv2.imread('TP_logo.jpg', cv2.IMREAD_COLOR)
 kernel = np.ones((3,3), np.uint8)       # set kernel as 3x3 matrix from numpy
#Create erosion and dilation image from the original image
erosion_image = cv2.erode(input_image, kernel, iterations=1)
dilation_image = cv2.dilate(input_image, kernel, iterations=1)
cv2.imshow('Input', input_image)
cv2.imshow('Erosion', erosion_image)
cv2.imshow('Dilation', dilation_image)
cv2.waitKey(0)       #wait for a key to exit

Đầu ra

Xói mòn và hủy hoại hình ảnh bằng OpenCV trong Python