Я загрузил стек tiff в MATLAB и пытаюсь подсчитать количество вокселей в пределах определенного порога. Максимальные значения изображения от 0 до 255, а мой порог - от 75 до 255. Изображение было разделено цветом, так что оно теперь просто красное и черное. Мой код выглядит следующим образом:Подсчет количества вокселей выше порогового значения из стека tiff
FileTif='ImageStack.tif';
InfoImage=imfinfo(FileTif);
mImage=InfoImage(1).Width;
nImage=InfoImage(1).Height;
NumberImages=length(InfoImage);
FinalImage=zeros(nImage,mImage,NumberImages,'uint16');
for i=1:NumberImages
FinalImage(:,:,i)=imread(FileTif,'Index',i,'Info',InfoImage);
end
idx = find(FinalImage >= 75 & FinalImage <= 255);
length(idx)
Мой вопрос в том, отражает ли это то, что я сказал, что я пытаюсь сделать. Вернее, при загрузке tiff-стека таким образом, являются ли элементы моей 3D-матрицы FinalImage значениями цвета от 0 до 255? Я уверен, что я прав, как
max(FinalImage(:))
min(FinalImage(:))
возвращает 255 и 0 соответственно, хотя путаница возникает, когда я использую воксельную счетчик плагину на ImageJ и получить другое значение. Я не уверен, что расхождение связано с методом подсчета вокселей в плагине или способом, которым ImageJ порождает стек изображений. Любой свет, пролитый на несоответствие, будет очень признателен!
Почему вы инициализируете 'FinalImage' как uint16, если интенсивность пикселей составляет от 0 до 255 (т. Е. Uint8)? И какие значения вы получаете с помощью imageJ? –
Я не слишком разбираюсь в различиях между uint8 и uint16 и не уверен, когда кто-то предпочитает другого. Я нашел образец кода для загрузки tiff-стека в MATLAB и использовал uint16. Значение, полученное мной из моего кода в Matlab, равно 1469144 (проверено как с uint16, так и с uint8 и получено одинаковое число), а ImageJ дал мне значение 1136671 –
Ok. Что такое плагин, который вы использовали в ImageJ? Разница между uint8 и uint16 связана со значениями, которые могут иметь пиксели. С uint8 это от 0 до 2^8 (т. Е. 255), тогда как с uint16 его 2^16 (т. Е. 65535), поэтому диапазон намного больше. Я думаю, что ImageJ преобразует все в uint8 для обработки (проверьте [здесь] (http://rsbweb.nih.gov/ij/docs/guide/146-28.html)) –