2015-05-15 5 views
1

Я работаю над изображениями 800 x 800 пикселей с глубиной до 24 (PNG). Я предполагаю, что это означает 3 x 8 бит. Эти изображения только черно-белые (0 или 255). Я хочу уменьшить эту глубину до 8 бит, потому что *, когда я обрабатываю эти изображения в Matlab, * я создаю матрицу 800 x 800 x 3, которая имеет большую вычислительную стоимость, чем вычисление 2D-матрицы.Уменьшение глубины изображения изображения

Моя идея состояла в том, чтобы подмножество первого слоя матрицы в matlab, но кажется, что я потерял информацию, потому что в моей матрице ничего не осталось.

`Im4=Im4(1:800,1:800);` 

Любая идея?

Я новичок в обработке изображений, и я не знаю основы ...

+0

Matlab может сохранять и сохранять изображения в формате '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Это определенно не создаст матрицу 800x800x3, если эти 24 бита на пиксель не являются фактически битовой глубиной, а 3RGB-каналами для цвета. –

ответ

1

rgb2gray, вероятно, самый безопасный способ преобразовать M-на-N-на-3 изображения в M-по-N ,

+0

Но OP утверждает, что изображение имеет 24-битную глубину, а не RGB! Если он хочет изменить битовую глубину, тогда 'gray2ind (I, 256)' является решением, а не 'rgb2gray' !! –

+2

Будем ждать разъяснений от ОП. – Dima

+1

Учитывая, что ответ был принят, я могу только предположить, что он работал нормально для ОП? – eigenchris

1

это просто альтернатива (так как вы новичок в MatLab обработки изображений его приятно знать различные методы)

gray_scale = Im4(:,:,1); 

Этот метод работает только потому, что ваше изображение уже в оттенках серого (это, вероятно, означает, что красный = зеленый = синий). Что говорит код от Im4, возьмите all rows и all columns из channel 1 и сохраните его в переменной с именем gray_scale. Канал 1 для изображения RGB относится к красному каналу.

также другие комментарии говорили о rgb-изображениях или 24-битных оттенках серого. простой способ проверить - сделать ОРИГИНАЛЬНОЕ изображение (перед обработкой) и ввести size(MY_IMAGE_NAME_HERE), это должно дать вам 2 или более номеров.

  1. количество строк
  2. число столбцов
  3. , если она есть дает число каналов, цветные изображения, как правило, имеют 3. Если нет третьего числа, что означает, что у вас есть 2d массив, который является полутоновой
Смежные вопросы