Trong bài viết này, chúng tôi sẽ thảo luận về cách triển khai hình ảnh của Photoshop High Pass [HPF] trong Python OpenCV.
Bộ lọc vượt qua cao
Khi chúng ta nói về xử lý tín hiệu số hoặc bộ lọc xử lý hình ảnh kỹ thuật số là khái niệm cơ bản nhất. Bộ lọc hoặc bộ lọc kỹ thuật số được sử dụng để sàng lọc đáp ứng tần số không mong muốn từ các tín hiệu. Một bộ lọc có thể được sử dụng để thực hiện hai tác vụ chính trong xử lý tín hiệu số và đó là phân tách tín hiệu và phục hồi tín hiệu. Tách tín hiệu về cơ bản là sự phân tách nhiễu và suy giảm nhiễu từ các tín hiệu đầu vào. Quá trình này chủ yếu được sử dụng trong EKG, một màn hình điện tâm đồ để lọc hơi thở và nhịp tim của người mẹ. Phục hồi tín hiệu là một quá trình khi tín hiệu đầu vào bị biến dạng bởi bất kỳ phương tiện nào. Điều này chủ yếu được sử dụng trong việc khử một hình ảnh. Chúng ta sẽ xem xét những gì bộ lọc vượt qua chủ yếu được sử dụng cho. & NBSP;
Lợi thế chính của Bộ lọc Pass Pass [HPF] được sử dụng để làm sắc nét hình ảnh bằng cách làm giảm tần số thấp. Khi phản ứng hoặc tín hiệu xung được truyền qua bộ lọc thông cao, HPF chủ yếu cho phép tần số cao đi qua. Vì các bộ lọc vượt qua cao được sử dụng để mài hình ảnh, tần số thu được ít hơn so với tần số cắt [ωc]. Trong OpenCV và trong xử lý hình ảnh kỹ thuật số, chúng tôi cũng sử dụng chức năng HPF để tìm các cạnh trong hình ảnh. & NBSP;High Pass Filter[HPF] main advantage is used to sharpen the image by attenuating the low frequency. When the impulse response or signal is passed through a high pass filter, an HPF mainly allows high frequencies to pass through. As High pass filters are used for sharpening the images, the frequency obtained is less compared to the cut-off frequency[ωc]. In OpenCV and in digital image processing we also use HPF functionality to find the edges in an image.
Phương pháp 1: Bộ lọc Pass cao [HPF] trong Python OpenCV
Ở đây chúng tôi sẽ thực hiện HPF bằng OpenCV trong Python
Hình ảnh đã qua sử dụng:
Bây giờ chúng ta có một hình ảnh, sử dụng mô -đun Python OpenCV, chúng ta sẽ đọc hình ảnh.
IMG = CV2.Imread [Out OutImage. [JPEG/PNG/jpg]
Với kích thước của hình ảnh, chúng ta cũng có thể thay đổi kích thước hình dạng bước này là hoàn toàn tùy chọn. Trong khi thay đổi kích thước hình ảnh, bạn có thể vượt qua nội suy để hình ảnh duy trì chất lượng của nó. Bạn có thể tự do chọn CV2.inter_bits, CV2.inter_cubic hoặc CV2.inter_linear để thay đổi kích thước phép nội suy. & NBSP;
img = cv2.resize [img, [chiều rộng, chiều cao], nội suy = cv2.inter_bits]
Bước tiếp theo là làm mờ hình ảnh. Lý do để làm mờ hình ảnh là để thêm hiệu ứng làm mịn cho một hình ảnh. Bằng cách làm mờ hình ảnh, chúng ta có thể lọc nhiễu không mong muốn từ hình ảnh. Trong thư viện OpenCV, chúng tôi sử dụng rộng rãi bộ lọc Gaussian. Nó sử dụng kỹ thuật tích chập kernel.
LƯU Ý: 127 được thêm vào sau khi trừ hình ảnh với hình ảnh mờ để thêm giao diện màu xám. Chúng ta sẽ sử dụng Gaussian Blur để làm mờ hình ảnh. & NBSP; 127 is added after subtracting the image with a blurred image to add the greyish look. We shall use Gaussian Blur to blur the image.
HPF = IMG - CV2.gaussianblur [IMG, [21,21], 3] +127
Thực hiện
Python3
import
cv2
img
=
cv2.imread[
"naruto.jpg"
]
Các
cv2
4cv2
5=
cv2
7
cv2
8=
img
img
1 img
2img
3cv2
1____23img
6img
7____________img
9=
0
=
1=
2=
3
=
1=
5=
6
=
7=
8]
cv2.imread[
0
Output:
Phương pháp 2: Sử dụng Sobel và Laplacian
Python Opencv hỗ trợ triển khai Sobel và Laplacian.
Cú pháp cho Laplacian: & nbsp; laplacian = cv2.laplacian [màu xám, cv2.cv_64f]laplacian=cv2.Laplacian[gray,cv2.CV_64F]
Cú pháp cho Sobelx: [dx = 1 và dy = 0]: & nbsp; sobelx = cv2.sobel [màu xám, cv2.cv_64f, 1,0, ksize = 7]sobelx=cv2.Sobel[gray,cv2.CV_64F,1,0,ksize=7]
Cú pháp cho Sobely: [dx = 0 và dy = 1]: & nbsp; sobely = cv2.sobel [màu xám, cv2.cv_64f, dx = 0, dy = 1, ksize = 7]sobely=cv2.Sobel[gray,cv2.CV_64F,dx=0,dy=1,ksize=7]
Lưu ý: CV2.cV_64F biểu thị độ sâu của hình ảnhcv2.CV_64F denotes the depth of the image
Python3
import
cv2
img
=
cv2.imread[
"naruto.jpg"
]
Các
cv2
8=
img
img
1 img
2img
3cv2
1____23img
6img
7____________img
9=
0
Phương pháp 2: Sử dụng Sobel và Laplacian
Python Opencv hỗ trợ triển khai Sobel và Laplacian.
Cú pháp cho Laplacian: & nbsp; laplacian = cv2.laplacian [màu xám, cv2.cv_64f]
Cú pháp cho Sobelx: [dx = 1 và dy = 0]: & nbsp; sobelx = cv2.sobel [màu xám, cv2.cv_64f, 1,0, ksize = 7]
Cú pháp cho Sobely: [dx = 0 và dy = 1]: & nbsp; sobely = cv2.sobel [màu xám, cv2.cv_64f, dx = 0, dy = 1, ksize = 7]
Lưu ý: CV2.cV_64F biểu thị độ sâu của hình ảnh
cv2.resize[img, [
0cv2.resize[img, [
1cv2
1cv2.resize[img, [
1cv2
1img
0]
cv2.resize[img, [
7=
cv2.resize[img, [
9]
cv2
01cv2
02]
cv2.resize[img, [
0cv2.resize[img, [
1cv2
1cv2.resize[img, [
1cv2
1cv2.resize[img, [
1]
cv2
11=
cv2.resize[img, [
9]
cv2
01cv2
16]
cv2.resize[img, [
0cv2.resize[img, [
1cv2
1cv2.resize[img, [
1cv2
1img
7]
cv2
25=
cv2.resize[img, [
9]
cv2
01cv2
30]
cv2.resize[img, [
0cv2.resize[img, [
1cv2
1cv2.resize[img, [
1cv2
1cv2
37]
import
cv2.imread[
4
cv2
01cv2
44]
cv2
46
=
7=
8]
cv2.imread[
0
Output:
import
cv2.imread[
6
img
=
cv2.imread[
"naruto.jpg"
0]
Python3
import
cv2
import
cv2.imread[
4
img
=
cv2.imread[
cv2
58]
]
1=
]
3
cv2
63=
cv2
65
cv2
66cv2
67cv2
68cv2
69
cv2
70=
cv2
72cv2
67cv2
74cv2
67cv2
76cv2
77
cv2
66cv2
67cv2
80]
cv2
82 cv2
83cv2
84 cv2
85cv2
67=
8cv2
88
cv2
89cv2
82 cv2
91cv2
84 cv2
85cv2
67=
8cv2
88
cv2
97cv2
66cv2
99=
img
01]
cv2
89cv2
66img
05
img
06 =
img
08=
img
10
cv2
82 cv2
83cv2
84 cv2
85cv2
67=
8cv2
88
cv2
89cv2
82 cv2
91cv2
84 cv2
85cv2
67=
8cv2
88
img
06 =
img
08=
img
10
Các
Các
img
59img
0img
31img
51img
9cv2.resize[img, [
1img
63img
9img
0img
47img
9=
8img
31img
51img
9cv2.resize[img, [
1img
63img
9cv2.resize[img, [
1img
47
cv2
66cv2
67=
08]
cv2
66cv2
67=
12]
Các
cv2
66cv2
67____=
08]
cv2
89cv2
66=
25
=
1=
27=
28
=
7=
8]
cv2.imread[
0
Output: