Phương pháp xử lý ảnh để lựa chọn gai


11

Tôi có một đầu vào dưới dạng hình ảnh nhị phân 3D và đầu ra ưa thích bên dưới:

Đầu vào:

ĐẦU VÀO

Đầu ra ưa thích:

ĐẦU RA

Tôi nên tìm phương pháp xử lý ảnh nào nếu tôi chỉ còn lại (các) đối tượng nhọn, giống như đầu ra ưa thích ở trên?


Bạn có ý nghĩa gì bởi hình ảnh nhị phân 3D ? Bạn có thể dễ dàng phân đoạn hình ảnh thành các phần riêng lẻ?
bjoernz

Theo 3D, ý tôi là Đó là một hình ảnh chụp cắt lớp.
Karl

1
Bạn có thể giải thích spikyđối tượng là gì? Điều gì thực sự gọi nó là gai nhọn? các đặc điểm chính để phát hiện các đối tượng gai nhọn là gì?
Dipan Mehta

Một vật nhọn trong trường hợp này là một khu vực 3D không trơn tru và có những cái gai giống như hình dạng trên tất cả chúng.
Karl

Câu trả lời:


19

Có nhiều góc trên đường viền của "đối tượng nhọn" của bạn, vì vậy một cách tiếp cận sẽ là điều chỉnh máy dò góc cho việc này.

Ví dụ, tôi đã tính toán định thức của tenxơ cấu trúc (mã Mathicala bên dưới) của một hình ảnh biến đổi khoảng cách:

nhập mô tả hình ảnh ở đây

Binarizing với độ trễ mang lại hình ảnh này, đó sẽ là điểm khởi đầu tốt cho thuật toán phân đoạn bạn chọn:

nhập mô tả hình ảnh ở đây

Mã toán học ( srclà hình ảnh nguồn bạn đã đăng)

Lúc đầu, tôi tính toán một biến đổi khoảng cách của hình ảnh đầu vào. Điều này tạo ra sự tương phản trên toàn bộ khu vực đối tượng (thay vì chỉ đường viền), vì vậy toàn bộ đối tượng có thể được phát hiện.

dist = ImageData[DistanceTransform[src]];

Tiếp theo tôi chuẩn bị các thành phần của tenor cấu trúc . Kích thước bộ lọc cho các dẫn xuất gaussian nếu 5, kích thước cửa sổ là 20.

gx = GaussianFilter[dist, 5, {1, 0}];
gy = GaussianFilter[dist, 5, {0, 1}];
gx2 = GaussianFilter[gx^2, 20];
gxy = GaussianFilter[gx*gy, 20];
gy2 = GaussianFilter[gy^2, 20];   

Để tính toán bộ lọc góc ở mỗi pixel, tôi chỉ cần cắm chúng vào bộ xác định biểu tượng của tenxơ cấu trúc:

corners = Det[{{dx2, dxy}, {dxy, dy2}}] /. {dx2 -> gx2, dxy -> gxy, dy2 -> gy2};

Về cơ bản là giống như:

corners = gx2 * gy2 - gxy * gxy;

Chuyển đổi nó thành một hình ảnh và nhân rộng nó thành phạm vi 0..1 mang lại hình ảnh máy dò góc ở trên.

Cuối cùng, tạo nhị phân cho nó với ngưỡng phù hợp sẽ cho hình ảnh nhị phân cuối cùng:

MorphologicalBinarize[Image[corners], {0.025, 0.1}]

Câu trả lời rất tuyệt! =)
Phonon

Câu trả lời của bạn thật tuyệt vời, tôi học được rất nhiều từ họ.
Andrey Rubshtein
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.