5

Tôi mới làm phân đoạn hình ảnh, nhưng tôi cần thực hiện để lấy cơ sở dữ liệu cho máy phân loại học máy.Phân đoạn hình ảnh đầy thử thách: nền và đối tượng tương tự

Về cơ bản tôi có một video tương tự như hình ảnh này:

Cow with a rectangle

Công việc của tôi là xác định con bò ở mặt trước, hoặc ít nhất là bất cứ con bò nào cả. Tôi nhận ra có một vấn đề tắc nghẽn, nhưng đối với một starter tôi muốn phân đoạn chính xác một con bò cô đơn, giống như một với hình chữ nhật màu đỏ xung quanh nó (vẽ tay).

Trong vấn đề ít thách thức, như thế này, tôi phân biệt bằng cách thêm một ngưỡng cho mỗi pixel, mà một trong hai trở thành (0,0,0) cho đối tượng hoặc (255.255.255) cho nền:

Megasteak

Sau đó, tôi gắn nhãn các pixel với cùng giá trị để lấy các lớp và lấy hình chữ nhật cho đủ lớn 'các đốm màu'.

Đối với hình ảnh trên cách tiếp cận này sẽ không hoạt động như các đối tượng và nền tương tự + có rất nhiều bóng, ánh sáng bên vv, vì vậy tôi không chắc chắn làm thế nào để tiếp cận nó. Mọi đề xuất đều được chào đón.

+0

Bạn có cân nhắc sử dụng máy dò cạnh không? –

+1

bạn cần xem xét phân đoạn ngữ nghĩa – Shai

+0

Vấn đề rất khó. Bạn có nhiều hình ảnh để thực hiện một hệ thống đào tạo lớn và sử dụng học tập sâu? –

Trả lời

0

Tôi sẽ thử chụp hai ảnh. Một hình ảnh của một nền 'tĩnh' không có bò, sau đó một bức ảnh thứ hai với một con bò. Sau đó, bạn có thể trừ hai hình ảnh đó. Tôi không quá quen thuộc với python nhưng imagemagick có thể dễ dàng hình ảnh khác biệt (http://www.imagemagick.org/Usage/compare/). Lý tưởng nhất là hình ảnh 'khác biệt' sẽ cô lập (các) con bò. Từ đó bạn có thể nhận được ưa thích và thử các thuật toán phát hiện cạnh khác nhau, v.v ...

Hy vọng điều đó sẽ hữu ích.

1

Tôi nhận thấy đây là một chủ đề cũ, nhưng tôi muốn đề xuất một cách tiếp cận cho các vấn đề như thế này.

Bạn có thể thử với phân đoạn dựa trên kết cấu, vì nền cỏ có kết cấu khác với bò.

Hãy xem this link nơi các tính năng năng lượng kết cấu cho hình ảnh được xác định theo kỹ thuật của Pháp luật.

Đây là triển khai thực hiện kỹ thuật luật bằng Python. Nó hoạt động bằng cách xác định hạt nhân 2D được sử dụng để trích xuất các tính năng khác nhau trong một hình ảnh, ví dụ như các cạnh, gợn sóng, các đốm màu và các kết hợp của chúng. Hàm dưới đây trả về 9 hình ảnh, từ đó các tính năng kết cấu có thể được trích xuất.

def laws(array): 

    # Define the 1D kernels 
    L5 = np.array([1,4,6,4,1]) # level 
    E5 = np.array([-1,-2,0,2,1]) # edge 
    S5 = np.array([-1,0,2,0,-1]) # spot 
    R5 = np.array([1,-4,6,-4,1]) # ripples 

    # Generate 2D kernels 
    L5E5 = np.outer(L5,E5) 
    E5L5 = np.outer(E5,L5) 

    L5R5 = np.outer(L5,R5) 
    R5L5 = np.outer(R5,L5) 

    E5S5 = np.outer(E5,S5) 
    S5E5 = np.outer(S5,E5) 

    S5S5 = np.outer(S5,S5) 

    R5R5 = np.outer(R5,R5) 

    L5S5 = np.outer(L5,S5) 
    S5L5 = np.outer(S5,L5) 

    E5E5 = np.outer(E5,E5) 

    E5R5 = np.outer(E5,R5) 
    R5E5 = np.outer(R5,E5) 

    S5R5 = np.outer(S5,R5) 
    R5S5 = np.outer(R5,S5) 


    return (0.5*(correlate(array, L5E5) + correlate(array, E5L5)), \ 
      0.5*(correlate(array, L5R5) + correlate(array, R5L5)), \ 
      0.5*(correlate(array, E5S5) + correlate(array, S5E5)), \ 
      correlate(array, S5S5), \ 
      correlate(array, R5R5), \ 
      0.5*(correlate(array, L5S5) + correlate(array, S5L5)), \ 
      correlate(array, E5E5), \ 
      0.5*(correlate(array, E5R5) + correlate(array, R5E5)), \ 
      0.5*(correlate(array, R5S5) + correlate(array, S5R5))) 
+0

Bạn chưa từng thấy trong nhiều năm ... –

Các vấn đề liên quan