Matlab imwrite
позволяет мне указывать парные аргументы 'BitDepth',4
при записи 2D uint16
массива в файл '* .png'.imwrite
моей Октавы не принимает парные аргументы 'BitDepth',4
.Однако я могу осуществлять ограниченный контроль глубины в битах, если масштабирую данные для uint8
и сохраняю их в массив 2D uint8
;«* .png» из imwrite
в два раза больше размера файла для массива uint16
.Я получил идею сделать это, посмотрев на imread
, для которого битовая глубина исходного файла изображения определяет тип uint
целевой переменной.Предполагая, что тип uint
исходного массива двумерных изображений аналогично определяет битовую глубину целевого файла imwrite
, uint8
дает битовую глубину 8. Однако я обнаружил, что битовая глубина 2 часто бывает достаточнодля сканирования в оттенках серого с разрешением 100 точек на дюйм. Есть ли простой способ иметь такой произвольный контроль глубины в битах для imwrite
?
В сторону: Что касается ссылки на uint16
выше, я не сделалпросто сделай это.По умолчанию это конверсия из цветного RGB.Из веб-поиска я нашел способ конвертации для моей старой Octave 4.0 (без rgb2gray
):
im=imread('rgb.jpeg');
[imInd,Ind]=rgb2ind(im);
imGray16=ind2gray(imInd,Ind); imwrite(imGray16,'gray16b.png');
imGray8=uint8(imGray16/256); imwrite(imGray8,'gray8b.png');
Я использую установку Octave, которая является частью Cygwin.Однако у моего ноутбука есть ограниченные права пользователя, и обновление Octave требует феноменального количества времени.