Bắt đầu với ngưỡng hóa

Xử lý ảnh bằng Python

Rebeca Gonzalez

Data Engineer

Ngưỡng hóa

Chia ảnh thành tiền cảnh và nền

Bằng cách biến thành đen trắng

Thực hiện bằng cách đặt mỗi pixel là:

  • 255 (trắng) nếu pixel $\gt$ giá trị ngưỡng
  • 0 (đen) nếu pixel $\lt$ giá trị ngưỡng

Ảnh ngưỡng hóa của người cầm máy ảnh

Xử lý ảnh bằng Python

Ngưỡng hóa

Phương pháp phân đoạn ảnh đơn giản nhất

  • Tách đối tượng
    • Phát hiện vật thể
    • Nhận diện khuôn mặt
    • V.v.

Ảnh domino sau ngưỡng hóa

Xử lý ảnh bằng Python

Ngưỡng hóa

Chỉ áp dụng cho ảnh thang xám

Các bước ngưỡng hóa ảnh với quân domino: RGB gốc, rồi thang xám, rồi ngưỡng hóa

Xử lý ảnh bằng Python

Áp dụng

# Obtain the optimal threshold value
thresh = 127

# Apply thresholding to the image binary = image > thresh
# Show the original and thresholded show_image(image, 'Original') show_image(binary, 'Thresholded')

Ảnh ngưỡng hóa của người cầm máy ảnh

Xử lý ảnh bằng Python

Ngưỡng hóa đảo

# Obtain the optimal threshold value
thresh = 127

# Apply thresholding to the image inverted_binary = image <= thresh
# Show the original and thresholded show_image(image, 'Original') show_image(inverted_binary, 'Inverted thresholded')

Ảnh ngưỡng hóa đảo của người cầm máy ảnh

Xử lý ảnh bằng Python

Phân loại

  • Toàn cục (dựa trên histogram): tốt cho nền đồng nhất

  • Cục bộ (thích nghi): cho nền chiếu sáng không đều

So sánh ngưỡng hóa toàn cục và cục bộ

Xử lý ảnh bằng Python

Thử thêm các thuật toán ngưỡng hóa

from skimage.filters import try_all_threshold

# Obtain all the resulting images fig, ax = try_all_threshold(image, verbose=False)
# Showing resulting plots show_plot(fig, ax)
Xử lý ảnh bằng Python

Thử thêm các thuật toán ngưỡng hóa

Tất cả phương pháp ngưỡng toàn cục thử trên ảnh thang xám của trang văn bản

Xử lý ảnh bằng Python

Giá trị ngưỡng tối ưu

Toàn cục

Nền đồng nhất
# Import the otsu threshold function
from skimage.filters import threshold_otsu

# Obtain the optimal threshold value thresh = threshold_otsu(image)
# Apply thresholding to the image binary_global = image > thresh
Xử lý ảnh bằng Python

Giá trị ngưỡng tối ưu

Toàn cục

# Show the original and binarized image
show_image(image, 'Original')
show_image(binary_global, 'Global thresholding')

Ảnh gốc người cầm máy ảnh, ảnh ngưỡng hóa và biểu đồ histogram với đường đỏ đánh dấu ngưỡng tối ưu

Xử lý ảnh bằng Python

Giá trị ngưỡng tối ưu

Cục bộ

Nền không đều
# Import the local threshold function
from skimage.filters import threshold_local

# Set the block size to 35 block_size = 35
# Obtain the optimal local thresholding local_thresh = threshold_local(text_image, block_size, offset=10)
# Apply local thresholding and obtain the binary image binary_local = text_image > local_thresh
Xử lý ảnh bằng Python

Giá trị ngưỡng tối ưu

Cục bộ

# Show the original and binarized image
show_image(text_image, 'Original')
show_image(binary_local, 'Local thresholding')

Ảnh văn bản sau ngưỡng hóa cục bộ

Xử lý ảnh bằng Python

Ayo berlatih!

Xử lý ảnh bằng Python

Preparing Video For Download...