Thực Hiện Bộ Lọc Sobel-Lập Trình Python-xử Lý ảnh Y Tế

Phép Sobel là sự kết hợp giữa làm mịn Gauss và phép vi phân, do vậy nó ít bị ảnh hưởng bởi nhiễu.

Việc kết hợp này không hẳn là việc lọc nhiễu bằng phép Gauss trước, rồi thực hiện Sobel để tìm biên mà phép Gauss và Sobel sẽ được kết hợp để tạo ra một ma trân lọc (kernel) rồi sau đó nhân chập ma trận này với ảnh. Hãy cùng xem tại sao có thể làm được như vậy:

bạn có thể sử dụng OpenCV cho việc này:

import cv2 import numpy as np img = cv2.imread(INPUT_IMAGE) img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY).astype(float) Edge_x = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3) Edge_y = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3) Edge = np.sqrt(Edge_x**2 + Edge_y**2) # image can be normalized to # fit into 0..255 color space cv2.imwrite(OUTPUT_IMAGE, Edge)

Ví dụ 2:

import numpy import scipy from scipy import ndimage im = scipy.misc.imread('bike.jpg') im = im.astype('int32') dx = ndimage.sobel(im, 1) # horizontal derivative dy = ndimage.sobel(im, 0) # vertical derivative mag = numpy.hypot(dx, dy) # magnitude mag *= 255.0 / numpy.max(mag) # normalize (Q&D) scipy.misc.imsave('sobel.jpg', mag)

Với hình ảnh, ‘bike.jpg’ là hình ảnh thang độ xám (chế độ ‘L’ không phải ‘RGB’) nên mỗi pixel chỉ có một giá trị được liên kết với nó.

Chia sẻ:

  • Chia sẻ
  • X
  • Facebook
  • In
  • LinkedIn
  • Reddit
  • Tumblr
  • Pinterest
  • Túi
  • Telegram
  • WhatsApp
  • Email
Thích Đang tải...

Có liên quan

Từ khóa » Bộ Lọc Sobel Là Gì