Nếu đầu ra của bộ lọc Gábor của bạn đáng tin cậy và sự thay đổi trong dữ liệu hình ảnh của bạn không quá cao đến mức kết quả trông hoàn toàn khác nhau, thì bạn có thể sử dụng phương pháp sau (các phần của nó đã được đề cập):
Binarize hình ảnh thứ hai của bạn với bất kỳ thuật toán ngưỡng tự động. Phạm vi các ngưỡng sẽ hoạt động lớn như bạn sẽ thấy.
Sử dụng thuật toán ghi nhãn thành phần để gắn nhãn cho từng vùng pixel được kết nối với một giá trị duy nhất.
Tính toán cho mọi thành phần của hình ảnh của bạn một thuộc tính mô tả, mức độ gần đối tượng của bạn với một vòng tròn được lấp đầy. Đối với điều này, bạn có thể sử dụng ví dụ về sự nhỏ gọn . Tôi đã sử dụng dưới tỷ lệ pixel trong bán kính đĩa tương đương . Bán kính này là bán kính một đĩa có cùng diện tích với đối tượng của bạn.
- Diện tích chỉ đơn giản là đếm số pixel của đối tượng của bạn
- Tính bán kính hình tròn cho diện tích của nó cũng có thể quản lý được
- Đối với pixel bên trong bán kính này, bạn cần trung tâm của từng đối tượng hình ảnh, nhưng đây chỉ là giá trị trung bình của tất cả các vị trí của pixel đối tượng. Nếu bạn là một nhà vật lý thì bạn biết trung tâm khối lượng của một số khối lượng điểm. Điều này là tương đương.
- Bây giờ bạn tính cho mỗi pixel của mỗi đối tượng khoảng cách từ tâm của nó và kiểm tra xem nó có nhỏ hơn bán kính vòng tròn hay không. Chia hai số và bạn có được tỷ lệ pixel bên trong và bên ngoài.
- Lấy đối tượng có phần cao nhất. Lưu ý: các đối tượng chỉ có một pixel sẽ nhận được giá trị là 1. Vì vậy, bạn nên đặt ngưỡng kích thước và chỉ lấy các đối tượng lớn hơn, giả sử là 10 pixel.
Để thấy rằng, một công cụ nhị phân tự động sẽ hoạt động, đây là kết quả cho một ngưỡng rất thấp và rất cao:
Cập nhật ghi nhãn thành phần
Sự lựa chọn của nhãn thành phần là không quan trọng cho ứng dụng của bạn. Tôi sẽ đề nghị, nếu bạn phải tự thực hiện nó, hãy sử dụng một phương pháp rất đơn giản. Các phiên bản một đường chuyền từ trang Wikipedia là rất dễ dàng. Về cơ bản, bạn lặp qua hình ảnh nhị phân của bạn và khi bạn gặp một pixel có màu trắng và chưa được gắn nhãn, bạn sử dụng nhãn mới cho đối tượng này và bắt đầu với pixel này.
Quá trình ghi nhãn đối tượng này bằng nhãn về cơ bản tương tự như lấp lũ. Đây là trên trang web Wikipedia các bước bên trong 1-4 trong thuật toán. Bạn bắt đầu với pixel được gắn nhãn này và đặt tất cả các hàng xóm của nó lên một ngăn xếp (họ đã sử dụng một vectơ ). Đối với một pixel trên ngăn xếp, bạn kiểm tra xem nó có phải là tiền cảnh và chưa được dán nhãn hay không. Nếu bạn phải gắn nhãn cho nó, bạn đặt lại tất cả các hàng xóm của nó trên ngăn xếp. Làm điều này cho đến khi ngăn xếp của bạn trống rỗng.
Sau đó, bạn tiếp tục quét qua hình ảnh. Không giống như mô tả trên trang Wiki, bạn không phải xóa pixel khỏi ảnh gốc, bạn chỉ cần bỏ qua khi bạn có giá trị khác 0 trong hình ảnh nhãn của bạn.