2016-03-18 21 views
0

Matlab'da YUV renk alanı görüntüleri ile çalışmak istiyorum ancak (eğer yanılıyorsam düzeltin) Matlab'ın varsayılan renk alanı RGB ile çalıştığına inanıyorum? Bu nedenle, örneğin kırmızı (R) kanalı üzerinde çalıştığım zaman, örneğin parlaklık (Y) kanalında çalıştığımı düşünerek yanıltıcı olabilirim. Doğrumuyum? Kullanılan renk alanını değiştirmek mümkün mü?Matlab varsayılan renk alanı ve YUV ile çalışma

Ben dönüşüm farkındayım, ancak şu anda bunun örneğin YUV renk alanı ve, çalışmak için Matlab söylemek mümkün olup olmadığını merak ediyorum, sadece tek bir çizgide ışıklılık kanalı değiştirmek (yerine değiştirerek RGB ise kırmızı yoğunluğu).

Karşılaştığım: http://www.mathworks.com/help/imaq/returnedcolorspace.html (ReturnedColorSpace), ancak nasıl uygulanacağını anlamıyorum.

Düzenleme:

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

figure; imshow(Cr); 

Ben de Matlab bu kodu denedim, ama bunu RGB renk alanı varsayarak almasıdır gri tonlama olarak Cr kanalı okuyor varsaymak haklıyım emin değilim ettik katılan? (Şekil, görüntünün gri tonlamalı bir sürümünü görüntüler)

EDIT (28/3/16) - YUV dosyamın imfinfo çıktısı. bunlar RGB konum gibi

    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] 

Bununla birlikte, aşağıdaki kod parçacığını "Y", "U", "V" görüntüleri yazar

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'); 
(her çıkış, her RGB renk kanalının bir gri tonlama versiyonu)

Bu "YUV" görüntüsünü YUV'ye (rgb2yuv koduyla) dönüştürme ve görsel olarak beklediğim 4 satır kod çıktısını tekrar etme. a1 bir parlaklık kanalı ve diğerleri kromdur.

+0

önerir. Bir RGB görüntüsünü okursanız, YUV almak için renk uzayını dönüştürmekten başka ne yapmak istersiniz? – Daniel

+0

Üzgünüm. YUV renk uzay görüntüsü (tiff format) okuyorum ve üzerinde işlem yapmak istiyorum. Hiçbir şey yapmadan YUV veya RGB sistemi ile çalışan işlemler var mı? Mesela, U -128'den 128'e çıkıyor, YUV'a inanıyorum ve G, RGB için 0'dan 255'e çıkıyor. Yani yaptığım operasyonlara bağlı olarak farklılıklar olacaktır. Matlab varsayılan olarak RGB ile çalışıyorsa ya da YUV olduğunu ve YUV ile çalıştığını fark ederse emin değilim. @Daniel – DragonDance27

+0

@ DragonDance27 "imfinfo" çıktısını resminize gönderebilir misiniz? – Amro

cevap

-3

oluk bu sayfayı okuma Sorunuzun anlamada problem

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

I = imread('image.tiff'); 
I.ReturnedColorSpace = 'YCbCr'; 
+1

'ReturnedColorSpace',' videoinput' nesnesinin bir özelliğidir. 'imread'' videoinput' nesnelerini döndürmez. – Daniel

+0

Görüntü İşleme Araç Kutusu ve Görüntü Toplama Aracı Kutusunu birlikte karıştırıyorsunuz. Bunu 'imread' ile yapamazsın. 'imread' basitçe piksellerin ham matrisini döndürür. Döndürülmüş olan ** bir nesne/yapı değildir ** bu nedenle bu ödev geçersizdir. – rayryeng

İlgili konular