Phân đoạn hình ảnh mô hình hỗn hợp Gaussian Python

Hình ảnh được biểu diễn dưới dạng mảng pixel. Một pixel là một đại lượng vô hướng (hoặc vectơ) hiển thị cường độ (hoặc màu). Một mô hình hỗn hợp Gaussian có thể được sử dụng để phân chia các pixel thành các phân đoạn tương tự để phân tích thêm

Trong 1]. =

Phân đoạn hình ảnh mô hình hỗn hợp Gaussian Python

pic = ExampleData[{"TestImage", "Aerial"}]

Hết[1]=

Phân đoạn hình ảnh mô hình hỗn hợp Gaussian Python

Trong 2]. =

Phân đoạn hình ảnh mô hình hỗn hợp Gaussian Python

pixels = Flatten[ImageData[pic]];

Trực quan hóa việc phân phối các giá trị pixel

hiển thị đầu vào Ngôn ngữ Wolfram hoàn chỉnh

Trong 3]. =

Phân đoạn hình ảnh mô hình hỗn hợp Gaussian Python

Histogram[pixels, ImageSize -> Medium, PlotTheme -> "Detailed"]

Hết[3]=

Phân đoạn hình ảnh mô hình hỗn hợp Gaussian Python

Khớp các giá trị pixel với mô hình hỗn hợp Gaussian ba thành phần

Trong[4]. =

Phân đoạn hình ảnh mô hình hỗn hợp Gaussian Python

gmm = Quiet@ EstimatedDistribution[pixels, MixtureDistribution[{p1, p2, p3}, {NormalDistribution[a1, a2], NormalDistribution[b1, b2], NormalDistribution[c1, c2]}]];

Gắn nhãn cho mỗi pixel bằng thành phần có thể xảy ra nhất với ước tính xác suất hậu nghiệm (MAP) tối đa

Dự án này đề cập đến việc phát hiện các phao dưới nước có màu sắc khác nhau bằng cách sử dụng mô hình hỗn hợp Gaussian. Thuật toán Tối đa hóa kỳ vọng được áp dụng để tìm hiểu sự phân bố màu của ba phao màu Xanh lục, Cam và Vàng. Quy trình trên lần đầu tiên được áp dụng trên gaussian 1D (kênh đơn), sau đó trên phân phối Gaussian 3D của hình ảnh

phụ thuộc

  • Ubuntu 16
  • Trăn 3. 7
  • OpenCV 4. 2
  • Nặng nề
  • matplotlib
  • hệ thống
  • môn Toán

Chạy

Để chạy mã phát hiện tất cả các phao bằng gaussian 3D

python3.7 model_all_colors_3D.py

Nhập lựa chọn mã (biểu đồ, đào tạo hoặc phát hiện phao) khi được nhắc

Để chạy mã phát hiện phao vàng 1D

python3.7 yellow_detection.py

Để chạy mã phát hiện phao xanh 1D

python3.7 green_detection.py

Để chạy mã phát hiện 1D phao màu cam

python3.7 orange_detection.py

Thử nghiệm

Đầu tiên, chúng tôi tạo tập dữ liệu từ từng khung hình của video và phân biệt từng chiếc phao màu. Một mẫu phao màu cam được đưa ra dưới đây-

phao màu cam cắt

Dựa trên biểu đồ trung bình cho mỗi phao màu, chúng tôi quyết định số cụm cần thiết để xác định phân bố màu. Phân phối gaussian cho phao màu cam được đưa ra dưới đây-

Phân phối Gaussian của phao màu cam

Bây giờ, sau khi biết phân phối màu, chúng tôi sử dụng các tham số này để phát hiện phao riêng lẻ trước, sau đó kết hợp cả ba trên video đầu vào. Hình góc trên bên trái là mặt nạ thu được từ các trọng số đã học, góc dưới bên trái là các cạnh mà ta xác định được từ mặt nạ. Đầu ra tiếp theo là hình ảnh trên cùng bên phải của phiên bản mở rộng của các cạnh. Từ đó, chúng tôi tìm thấy giá trị trung bình và tạo một vòng tròn xung quanh nó để phát hiện phao như bên dưới-

Mô hình hỗn hợp Gaussian để phân đoạn hình ảnh là gì?

Mô hình hỗn hợp Gaussian trừu tượng (GMM) là một công cụ linh hoạt để phân đoạn ảnh và phân loại ảnh . Tuy nhiên, một hạn chế chính của GMM là nó không xem xét thông tin không gian. Một số tác giả đã đưa thông tin không gian toàn cầu từ các pixel lân cận vào GMM mà không tính đến nội dung hình ảnh.

GMM có tốt hơn K không

Sự khác biệt có thể nhìn thấy đầu tiên giữa K-Means và Gaussian Mixtures là hình dạng của ranh giới quyết định. GM linh hoạt hơn một chút và với ma trận hiệp phương sai ∑ chúng ta có thể tạo ranh giới hình elip, trái ngược với ranh giới hình tròn với phương tiện K. Một điều nữa là GM là một thuật toán xác suất

Là mô hình hỗn hợp Gaussian phân cụm?

Mô hình hỗn hợp Gaussian (GMM) thường được sử dụng để phân cụm dữ liệu . Bạn có thể sử dụng GMM để thực hiện phân cụm cứng hoặc phân cụm mềm trên dữ liệu truy vấn. Để thực hiện phân cụm cứng, GMM gán các điểm dữ liệu truy vấn cho các thành phần bình thường đa biến để tối đa hóa xác suất sau của thành phần, dựa trên dữ liệu.

GMM trong Python là gì?

A Mô hình hỗn hợp Gaussian (GMM) cố gắng tìm ra sự kết hợp của các phân bố xác suất Gaussian đa chiều để mô hình hóa tốt nhất bất kỳ tập dữ liệu đầu vào nào. Trong trường hợp đơn giản nhất, các GMM có thể được sử dụng để tìm các cụm theo cách tương tự như phương tiện k. từ sklearn. nhập hỗn hợp GMM gmm = GMM(n_components=4).