Многомерный нормальный PDF для анализа изображений RGB в Scipy - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу обнаружить пиксели "неба" в изображении RGB с помощью функции плотности вероятности трехмерного многомерного нормального распределения.Я использую патч изображения, который содержит несколько пикселей неба, чтобы вычислить среднее значение и дисперсию каналов RGB, а затем я вызываю функцию multivariate_normal.pdf, чтобы вычислить вероятность того, что каждый пиксель изображения будет принадлежать многомерномураспространение патча неба.Я предполагаю, что ковариационная матрица является диагональной, что означает, что каналы RGB независимы.

import numpy as np
import cv2
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal
from scipy.stats import norm

imBGR = cv2.imread("../ressources/house.jpg")
patch_sky = cv2.imread("../ressources/sky_patch.png")

# Gaussian model for sky

means = np.array([np.mean(patch_sky[:, :, 0]), np.mean(patch_sky[:, :, 1]), np.mean(patch_sky[:, :, 2])])

var = np.array([np.var(patch_sky[:, :, 0]), np.var(patch_sky[:, :, 1]), np.var(patch_sky[:, :, 2])])

proba = multivariate_normal.pdf(imBGR, mean=means, cov=var)

print("proba shape:", np.shape(proba))
print("maximum probability:", np.max(proba))

Проблема в том, что вычисленная максимальная вероятность очень мала:

proba shape: (960, 1280)
maximum probability: 0.00010730705050040148

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...