Проблемы с MeanStdDev OpenCV

Я пытаюсь написать пороговую функцию, которая будет принимать в качестве параметра мою пороговую функцию. для этого мне нужно использовать meanStdDev.

Mat structElem = dst(Range(i - radius, i + radius), Range(j - radius, j + radius));

                                    meanStdDev(structElem, mean, stdev);

                                    double threshValue = mean[0] * stdMean[0] + stdMean[1] * stdev[0] + stdMean[2]);

здесь mean и stdev — это скаляры, а stdMean — это массив, который я использую для получения значения Thresh. Самое смешное, что когда я пытаюсь сделать то же самое с 8-битными изображениями, все работает.


person Vahagn Tumanyan    schedule 18.07.2015    source источник
comment
stdMean определен намного выше этого кода. И формула проста действительно stdMean это массив из 3-х элементов [a,b,c] Значение порога должно быть средним * a + StandardDev * b + c   -  person Vahagn Tumanyan    schedule 18.07.2015


Ответы (1)


В документации к meanStdDev говорится, что «Функция meanStdDev вычисляет среднее значение и стандартное отклонение M элементов массива независимо для каждого канала и возвращает его через выходные параметры»....

"результаты могут быть сохранены в Scalar_s."

Таким образом, средние и стандартные значения являются скалярными значениями для цветных изображений, которые разделяют изображение на каналы, а также вычисляют и применяют пороговое значение для каждого канала независимо. среднее[0] среднее значение первого канала среднее[1] среднее значение второго канала ....

person Birol Kuyumcu    schedule 20.07.2015
comment
Мое изображение ранее было в оттенках серого, поэтому оно имеет только один канал. - person Vahagn Tumanyan; 21.07.2015
comment
Хорошо, сначала нормализуйте до 8-битного одиночного канала, затем примените свою формулу - person Birol Kuyumcu; 22.07.2015