2015-11-26 9 views
0

Я использую как Matlab, так и OpenCV для создания гистограммы Grayscale, разделенной на 10 бункеров.Matlab: Использование imhist() с ячейками одинакового размера

В OpenCV каждый бит имеет равный диапазон (то есть [0,25], [26,51], [52,77], ...).

Однако в Matlab размеры бункера не равны (я думаю, это связано с некоторой теорией о различной чувствительности к изменениям интенсивности между более низкими и более высокими значениями).

Эти разные результаты создают для меня большие проблемы.

Есть ли возможность использовать calcHist с равными размерами бункера? (Конечно, для варианта реализации его самого, за исключением ...)

+0

не 'calcHist' есть дополнительный' edges' входа? – BillBokeey

+0

Возможно, это возможно, но я не хочу указывать каждый из них вручную. Я иногда меняю количество ящиков .. – SomethingSomething

+0

Я не понимаю. Я попробовал «imhist (img, 10)», и на самом деле я вижу равный размер бина? – user3667217

ответ

0

Отвечая на мой собственный вопрос с самостоятельной реализованной функцией:

function h = fixedSizeBinnedHist(grayImg, numBins) 
    binSize = 256/numBins; 
    binnedImg = floor(double(grayImg)/binSize); 
    maxVal = max(binnedImg(:)); 
    numLeadingZeros = min(binnedImg(:));   
    numTrailingZeros = numBins - maxVal - 1; 
    % First, computing histogram for the existing range 
    h = hist(double(binnedImg(:)), maxVal - numLeadingZeros + 1); 
    leading = zeros(1, numLeadingZeros); 
    trailing = zeros(1, numTrailingZeros); 
    % Finally attaching needed zeros in both sides, so the histogram is in the requested size 
    h = [leading h trailing]; 
end