2013-02-13 23 views
6

Bir görüntü alabilen ve belirli düzeltme işlemlerini gerçekleştirebilen bir işlev yazıyorum. İşlevimin en başında, görüntüyü pic = rgb2gray(pic);Matlabdaki bir görüntünün Gri Tonlamalı olup olmadığını belirleme

kullanarak gri tonlamalı bir görüntüye dönüştürüyorum. Bu işlevin herhangi bir görüntü almasına izin vermeyi umuyordum (zaten gri tonlamalı olsa bile). Matlab'da, gri tonlamalı bir görüntüye aktarırsam, şu anda hata yapar, çünkü dönüştüremez (ki bu barizdir).

Görüntüyü test etmek ve renk biçimini belirlemek için yerleşik bir işlev veya kolay bir yol var mı?

Ben isRGB ve isGrayscale işlevleri hakkında google şey okumak ama onlar bunu bir işlev inşa olsaydı harika olurdu böyle bir şey düşünüyorum

... Matlab sonraki sürümlerinde kaldırılmıştır.

 if (pic == RGB) 
     do 
      . 
      . 
      . 
    elseif (pic == GrayScale) 
     do 
      . 
      . 
      . 
    else 
     do 
      . 
      . 
      . 

Değilse, belki pixel x,y alır ve değerini test eden bir fonksiyon yazabiliriz?

if (p(x,y) == .... veya başka bir şey? Emin değilim ... Düşünceler? tonlamalı için

size(pic, 3) = 3 

:

cevap

5

benzer, ancak farklı bir işleve sahip. ndims kullanın:

ndims(pic) 

görüntü pic boyut sayısını verir. Bir dizideki boyutların sayısı her zaman 2'den büyük veya ona eşittir ve bir RGB görüntüsünde >2 olacaktır. Takip eden tekil boyutlar dikkate alınmaz (Tekil boyut, size(A,dim) = 1 için olan herhangi bir boyuttur.)

11

Renkli görüntüler böylece 3 kanal (R, G, B) sahip @Milo önerdi ne

size(pic, 3) = 1 
+0

Bu mantıklıdır. Merakla, boyut (pic, 3) = 2' ne için kullanılır? İçermem gereken başka renk formatları var mı? – Reanimation

+0

Teoride, herhangi bir sayıda kanalın, hatta 2 veya daha fazlasının ([hiperspektral görüntüleme] (http://en.wikipedia.org/wiki/Hyperspectral_imaging)) görüntülerine sahip olabilirsiniz. Pratikte, renkli görüntüler 3 veya 4 kanallıdır ([renk alanları] (http://en.wikipedia.org/wiki/Color_space#Partial_list_of_color_spaces)). Kodunuzun ne olduğuna bağlı olarak, herhangi bir görüntü türüyle baş edebilmek için dizinin üçüncü boyutu (derinlik) üzerinde daha iyi bir döngü yapmalısınız. – Milo

1

f = imfinfo ('yourimage.someextension');

bu programlı kontrol edebilir görüntünün size colorType dönecektir

f.ColorType.

İlgili konular