Ngưỡng thích ứng Python

Ngưỡng là phương pháp phân đoạn ảnh đơn giản nhất. Đây là một hoạt động phi tuyến tính để chuyển đổi ảnh thang độ xám thành ảnh nhị phân trong đó hai mức được gán cho các pixel nằm dưới hoặc trên giá trị ngưỡng đã chỉ định. Nói cách khác, nếu giá trị pixel lớn hơn giá trị ngưỡng, nó sẽ được gán một giá trị [có thể là màu trắng], nếu không, nó sẽ được gán giá trị khác [có thể là màu đen]. Trong OpenCV, chúng tôi sử dụng cv2. hàm ngưỡng []

cv2.threshold[src, thresh, maxval, type[, dst]]

Chức năng này áp dụng ngưỡng mức cố định cho một mảng kênh đơn. Hàm này thường được sử dụng để lấy hình ảnh hai cấp độ [nhị phân] ra khỏi hình ảnh thang độ xám [ compare[] cũng có thể được sử dụng cho mục đích này] hoặc để loại bỏ nhiễu, nghĩa là lọc ra các pixel quá nhỏ hoặc quá lớn . Có một số loại ngưỡng được hỗ trợ bởi chức năng

Hàm trả về giá trị ngưỡng được tính toán và hình ảnh ngưỡng

bogotobogo. tìm kiếm trang web com

  1. src - mảng đầu vào [điểm nổi đơn kênh, 8 bit hoặc 32 bit]. Đây là hình ảnh nguồn, phải là hình ảnh thang độ xám
  2. thresh - giá trị ngưỡng và nó được sử dụng để phân loại các giá trị pixel
  3. maxval - giá trị tối đa để sử dụng với các loại ngưỡng THRESH_BINARY và THRESH_BINARY_INV. Nó biểu thị giá trị được cung cấp nếu giá trị pixel lớn hơn [đôi khi nhỏ hơn] giá trị ngưỡng
  4. loại - loại ngưỡng. [xem ngưỡng để biết chi tiết]
    1. cv2. THRESH_BINARY
    2. cv2. THRESH_BINARY_INVY
    3. cv2. THRESH_TRUNCY
    4. cv2. THRESH_TOZEROY
    5. cv2. THRESH_TOZERO_INVY

    6. nguồn ảnh. ngưỡng

  5. dst - mảng đầu ra có cùng kích thước và loại như src

Ngưỡng - mã và đầu ra

Mã trông như thế này

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

img = cv2.imread['gradient.png',0]
ret,thresh1 = cv2.threshold[img,127,255,cv2.THRESH_BINARY]
ret,thresh2 = cv2.threshold[img,127,255,cv2.THRESH_BINARY_INV]
ret,thresh3 = cv2.threshold[img,127,255,cv2.THRESH_TRUNC]
ret,thresh4 = cv2.threshold[img,127,255,cv2.THRESH_TOZERO]
ret,thresh5 = cv2.threshold[img,127,255,cv2.THRESH_TOZERO_INV]

titles = ['Original Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]

for i in xrange[6]:
    plt.subplot[2,3,i+1],plt.imshow[images[i],'gray']
    plt.title[titles[i]]
    plt.xticks[[]],plt.yticks[[]]

plt.show[]

đầu ra


Có hình ảnh gốc.
độ dốc. png và hình tròn. png

Sử dụng giá trị ngưỡng chung có thể không phải là lựa chọn tốt khi hình ảnh có các điều kiện ánh sáng khác nhau ở các khu vực khác nhau. Vì vậy, trong trường hợp đó, chúng tôi có thể muốn sử dụng ngưỡng thích ứng. Nó sử dụng thuật toán tính toán ngưỡng cho một vùng nhỏ của hình ảnh để chúng tôi có thể nhận được các ngưỡng khác nhau cho các vùng khác nhau của cùng một hình ảnh và nó mang lại cho chúng tôi kết quả tốt hơn đối với hình ảnh với các điều kiện ánh sáng khác nhau

cv.AdaptiveThreshold[src, dst, maxValue, adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C, thresholdType=CV_THRESH_BINARY, blockSize=3, param1=5] 

ở đâu

  1. src - Nguồn hình ảnh kênh đơn 8 bit
  2. dst - Hình ảnh đích có cùng kích thước và cùng loại với src
  3. maxValue - Giá trị khác không được gán cho các pixel thỏa mãn điều kiện
  4. AdaptiveMethod - Thuật toán ngưỡng thích ứng để sử dụng, ADAPTIVE_THRESH_MEAN_C [giá trị ngưỡng là giá trị trung bình của khu vực lân cận] hoặc ADAPTIVE_THRESH_GAUSSIAN_C [giá trị ngưỡng là tổng trọng số của các giá trị lân cận trong đó trọng số là cửa sổ gaussian]. AdaptiveMethod quyết định cách tính giá trị ngưỡng
  5. ngưỡngType - Loại ngưỡng phải là THRESH_BINARY hoặc THRESH_BINARY_INV
  6. blockSize - kích thước của vùng lân cận pixel được sử dụng để tính giá trị ngưỡng cho pixel. 3, 5, 7, v.v.
  7. C - Hằng số bị trừ khỏi giá trị trung bình hoặc giá trị trung bình có trọng số. Thông thường, nó dương nhưng cũng có thể bằng 0 hoặc âm. Nó chỉ là một hằng số được trừ khỏi giá trị trung bình hoặc giá trị trung bình được tính

Đây là mã cho ngưỡng thích ứng

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

img = cv2.imread['bw.png',0]
img = cv2.medianBlur[img,5]

ret,th1 = cv2.threshold[img,127,255,cv2.THRESH_BINARY]
th2 = cv2.adaptiveThreshold[img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\
            cv2.THRESH_BINARY,11,2]
th3 = cv2.adaptiveThreshold[img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
            cv2.THRESH_BINARY,11,2]

titles = ['Original Image', 'Global Thresholding [v = 127]',
            'Adaptive Mean Thresholding', 'Adaptive Gaussian Thresholding']
images = [img, th1, th2, th3]

for i in xrange[4]:
    plt.subplot[2,2,i+1],plt.imshow[images[i],'gray']
    plt.title[titles[i]]
    plt.xticks[[]],plt.yticks[[]]
plt.show[]

hình ảnh gốc. bw. png

Phân tách các bản phân phối lưỡng kim với ngưỡng Otsu

Otsu nhị phân hóa tự động tính toán giá trị ngưỡng từ biểu đồ hình ảnh cho hình ảnh hai chế độ

Nó sử dụng cv2. ngưỡng [] có thêm cờ, cv2. THRESH_OTSU. Đối với giá trị ngưỡng, chỉ cần vượt qua số không. Sau đó, thuật toán tìm giá trị ngưỡng tối ưu và trả về cho chúng tôi dưới dạng đầu ra thứ hai, retVal. Nếu ngưỡng Otsu không được sử dụng, retVal vẫn giống như giá trị ngưỡng chúng tôi đã sử dụng

Ngưỡng thích nghi là gì?

Định nghĩa. Ngưỡng thích ứng, còn được gọi là ngưỡng động hoặc ngưỡng cục bộ, thiết lập mức ngưỡng để xác định xem nên chuyển sang trắng hay đen ở cấp khu vực . Vùng được lấy mẫu và phương pháp đánh giá khác nhau giữa các ứng dụng.

Ngưỡng thích ứng hoạt động như thế nào?

Ngưỡng thích ứng hoạt động bằng cách sử dụng kỹ thuật máy học để phân tích dữ liệu lịch sử, đôi khi được hiển thị trong biểu đồ, cho các mẫu giúp xác định trạng thái bình thường của môi trường của bạn.

Ngưỡng trong Python là gì?

Ngưỡng là một loại phân đoạn hình ảnh, trong đó chúng tôi thay đổi pixel của hình ảnh để làm cho hình ảnh dễ phân tích hơn . Trong ngưỡng, chúng tôi chuyển đổi một hình ảnh từ màu sắc hoặc thang độ xám thành một hình ảnh nhị phân, tôi. e. , một cái chỉ đơn giản là đen trắng.

Ngưỡng cv2 trong Python là gì?

Chúng tôi sử dụng cv2. Phương thức THRESH_BINARY_INV, cho biết các giá trị pixel p nhỏ hơn T được đặt thành giá trị đầu ra [đối số thứ ba]. Cv2. hàm ngưỡng sau đó trả về một bộ gồm 2 giá trị. đầu tiên, T, là giá trị ngưỡng .

Chủ Đề