Цветовое пространство Matlab по умолчанию и работа с YUV

Я заинтересован в работе с изображениями цветового пространства YUV в Matlab, но (поправьте меня, если я ошибаюсь), я считаю, что цветовое пространство Matlab по умолчанию работает с RGB?

Поэтому я могу вводить себя в заблуждение, думая, что работаю, например, с каналом яркости (Y), тогда как на самом деле я работаю с красным каналом (R). Я прав? Можно ли изменить используемое цветовое пространство?

Я знаю о преобразованиях, но на данный момент мне любопытно, можно ли указать Matlab работать с цветовым пространством YUV и, например, просто изменить канал яркости в одной строке (вместо изменения интенсивности красного, если RGB ).

Я наткнулся на: http://www.mathworks.com/help/imaq/returnedcolorspace.html (ReturnedColorSpace), но я не понимаю, как это реализовать.

Редактировать:

t = Tiff('e82.tiff','r');
[Y,Cb,Cr] = read(t);
close(t)

figure; imshow(Cr);

Я также пробовал этот код в Matlab, но я не уверен, правильно ли я предполагаю, что он считывает канал Cr как оттенки серого, потому что он предполагает задействованное цветовое пространство RGB? (На рисунке показана версия изображения в оттенках серого)

РЕДАКТИРОВАТЬ (28.03.16) - вывод imfinfo моего файла YUV.

                 FileSize: 353500
                   Format: 'tif'
            FormatVersion: []
                    Width: 720
                   Height: 243
                 BitDepth: 24
                ColorType: 'YCbCr'
          FormatSignature: [73 73 42 0]
                ByteOrder: 'little-endian'
           NewSubFileType: 0
            BitsPerSample: [8 8 8]
              Compression: 'PackBits'
PhotometricInterpretation: 'YCbCr'
             StripOffsets: [1x49 double]
          SamplesPerPixel: 3
             RowsPerStrip: 5
          StripByteCounts: [1x49 double]
              XResolution: 72
              YResolution: 72
           ResolutionUnit: 'Inch'
                 Colormap: []
      PlanarConfiguration: 'Chunky'
                TileWidth: []
               TileLength: []
              TileOffsets: []
           TileByteCounts: []
              Orientation: 1
                FillOrder: 1
         GrayResponseUnit: 0.0100
           MaxSampleValue: [255 255 255]
           MinSampleValue: [0 0 0]
             Thresholding: 1
                   Offset: 353302
                 Software: 'Lavc56.60.100'
         YCbCrSubsampling: [2 1]
      ReferenceBlackWhite: [15 235 128 240 128 240]

Однако следующий фрагмент кода записывает изображения «Y», «U», «V», как если бы они были RGB (каждый вывод представляет собой версию каждого цветового канала RGB в оттенках серого).

a = imread('3d008.tiff');
a1 = a(:,:,1); imwrite(a1,'xdel1.tiff');
a2 = a(:,:,2); imwrite(a2,'xdel2.tiff');
a3 = a(:,:,3); imwrite(a3,'xdel3.tiff');

Преобразование этого изображения «YUV» в YUV (через код rgb2yuv) и повторение приведенных выше 4 строк кода выводит то, что я визуально ожидаю. a1 является каналом яркости, а остальные — каналом цветности.


person DragonDance27    schedule 18.03.2016    source источник
comment
У меня проблемы с пониманием вашего вопроса. Если вы читаете изображение RGB, что еще, кроме преобразования цветового пространства, вы хотите сделать, чтобы получить YUV?   -  person Daniel    schedule 19.03.2016
comment
Извиняюсь. Я читаю изображение цветового пространства YUV (формат tiff) и хочу выполнять над ним операции. Ничего не делая, работают ли операции с системой YUV или RGB? Например, U изменяется от -128 до 128, я полагаю, для YUV, а G — от 0 до 255 для RGB. Таким образом, будут различия в зависимости от операций, которые я делаю. Я не уверен, что Matlab по умолчанию работает с RGB или действительно распознает YUV и работает с YUV. @Дэниел   -  person DragonDance27    schedule 19.03.2016
comment
@DragonDance27, можешь опубликовать результат imfinfo на своем изображении?   -  person Amro    schedule 19.03.2016
comment
Извините за задержку с ответом. Я отредактировал вопрос, включив вывод imfinfo и объяснение того, почему это не изображения YUV. @Амро   -  person DragonDance27    schedule 28.03.2016


Ответы (1)


Читая эту страницу, я предложу

http://www.mathworks.com/help/imaq/specifying-the-color-space.html

I = imread('image.tiff');
I.ReturnedColorSpace = 'YCbCr';
person marco    schedule 18.03.2016
comment
ReturnedColorSpace является свойством videoinput объектов. imread не возвращает videoinput объектов. - person Daniel; 19.03.2016
comment
Вы смешиваете Image Processing Toolbox и Image Acquisition Toolbox вместе. Вы не можете сделать это с imread. imread просто возвращает необработанную матрицу пикселей. То, что возвращается, не является объектом/структурой, поэтому это присвоение недействительно. - person rayryeng; 19.03.2016