Görme ve görüntü işlemede neden HSV renk uzayını bu kadar sık ​​kullanıyoruz?


64

Her yerde kullanılan HSV renk uzayını görüyorum: izleme, insan tespiti, vb ... Merak ediyorum, neden? RGB'yi kullanmaktan daha iyi yapan bu renk alanıyla ilgili nedir?


3
Bu çok iyi bir soru. Bence biraz daha ayrıntılı olmaktan fayda sağlayacak: HSV nedir, RGB nedir. Cevapların çoğu HSV ile RGB'yi karşılaştırdığı için, bu iki renk uzayını karşılaştırmak için başlık yeniden çevrilebilir.
PhilMacKay,

2
Bir başka güzel soru da, "HSV neden HSL yerine her yerde kullanılıyor?"
posfan12

Yanıtlar:


60

Basit cevap, RGB'nin aksine , HSV'nin luma veya görüntü yoğunluğunu kroma veya renk bilgisinden ayırmasıdır . Bu, birçok uygulamada çok faydalıdır. Örneğin, bir renkli görüntünün histogram eşitlemesini yapmak istiyorsanız, bunu muhtemelen sadece yoğunluk bileşeninde yapmak ve renkli bileşenleri yalnız bırakmak istersiniz. Aksi takdirde çok garip renkler elde edersiniz.

Bilgisayarla görüşte, renk bileşenlerini yoğunluğa göre ışıklandırma değişikliklerine veya gölgeleri gidermek gibi çeşitli nedenlerle ayırmak istersiniz.

Bununla birlikte, HSV'nin rengi yoğunluğundan ayıran birçok renk alanından biri olduğuna dikkat edin (Bkz. YCbCr, Lab, vb.). HSV, genellikle RGB ve HSV arasında dönüştürme kodunun yaygın olarak bulunabildiği ve kolayca uygulanabildiği için kullanılır. Örneğin, MATLAB için Görüntü İşleme Araç Kutusu işlevleri rgb2hsvve içerir hsv2rgb.


42

Renk bilgisi, genellikle HSV bilgisinden çok daha gürültülüdür.

Size bir örnek vereyim: Ben ve bazı arkadaşlar, gerçek sahne videolarındaki trafik işaretlerinin tanınmasıyla ilgili bir projeye dahil olduk (gürültü, gölgeler ve bazen tıkanma mevcut). Daha büyük bir projenin parçasıydı, bu da bize bu belirli soruna farklı yaklaşımlar denemek için zaman kazandırdı (ve daha eski yaklaşımları tekrar kullanın). Renk bazlı yaklaşımı kendim denemedim, ama ilginç bir bilgiyi hatırlıyorum: _ DURDUR işaretindeki baskın RGB bileşeni genellikle kırmızı değildi ! (çoğunlukla gölgelerden dolayı)

Bir HSV renk uzayından genellikle daha iyi bilgi alabilirsiniz . Bir kişisel deneyim örneği tekrar deneyeyim ve deneyeyim: Üzerinde gölgeli tek renkli bir düzlem görüntüsüne sahip olduğunuzu hayal edin. RGB renk alanında, gölge kısmı büyük olasılıkla gölgesiz kısımdan çok farklı özelliklere sahip olacaktır. HSV ColorSpace olarak, renk gölgesi esas etkileyecektir: Her iki yamalar bileşeni benzer olması daha olasıdır değeri , ya da belki satuation ise, bileşen renk beyaz parlaklık ve sulandırılmış-lik var olmayan (primer "renk" belirten / black) çok fazla değişmemeli.

Bu açıklamalar size sezgisel gelmiyorsa, şunu öneriyorum:

  • HSV renk alanında bir rengi temsil etmek için kullanılan bileşenleri deneyin ve daha iyi anlayın ve sizi RGB bilgisini yenileyin
  • bu tür renk temsillerinin geliştirilmesinin nedenlerini deneyin ve görün : insan renginin yorumlanması görüşüne dayanarak her zaman bir şekilde

    örneğin çocuklar gerçekten çok renkli değiller == değerli nesneler, rengin yoğun ve seyreltilmemiş olduğu yüksek oranda doymuş nesneleri tercih ederler.

  • Bunu aldıktan ve biraz sezgi geliştirdikten sonra, görüntülerle oynamalısınız: RGB ve HSV bileşenlerinde çeşitli görüntüleri açmayı deneyin

    Amacınız , gölgeler, güçlü ışıklandırma, ışık yansıması içeren görüntüler için bu ayrışmalardaki bir farkı görmek ve anlamak olacaktır .

  • Oynamak istediğiniz belirli bir görüntü türünüz varsa, bunları ayrıştırmayı deneyin: kim bilir, belki RGB gerçekten ihtiyaçlarınız için HSV'den daha uygundur :)


1
Gölge ise sadece parlaklığı değiştirmelidir - doygunluğu değil.
Andrey Rubshtein

@ Dediğim gibi, kendime renk temelli yaklaşım üzerinde çalışmadım, ama sadece bir gölge olmasaydı - muhtemelen çevreden dolaylı bir ışıklandırma ya da benzer bir şeyin rol oynadığını söyleyebilirim .
penelope

1
Haklısın. Bununla birlikte, dolaylı aydınlatma durumunda, Ton da değişebilir.
Andrey Rubshtein

1
@Andrey Bu yüzden ifadelerim: "daha muhtemel", "benzer", "öncelikli etki", ... Sonuçta, HSV'yi açıklamamıştım, sadece bazı örnekler verdim ve tecrübeye dayalı tahminler yaptım. Ve, herhangi bir uygulama için en uygun renk alanını seçmenin en iyi yolu , görüntü veritabanınızla ve farklı renk alanlarıyla oynamaktır
penelope

3
Gölge ve dolayısıyla birincil ışık kaynağı (güneş) tarafından aydınlatılmayan herhangi bir şey ikincil ışık kaynağı tarafından aydınlatılıyor - gökyüzü, dev, parlak ve çok mavi bir ışık. İnsan gözümüze kırmızı hala kırmızı gözüküyor, çünkü gözlerimiz mutlak renk yerine göreceli renk ölçümleri yapıyor, bu nedenle iç mekanlarda olmayan flaşlı fotoğraflarınız sandığınızdan daha sarı görünüyor. Ve aslında imaj veritabanınızla uğraşmak konusunda kesin bir anlaşma yapıyorum.
John Robertson,

8

Yalnızca Hue bileşenini kullanmak, algoritmayı aydınlatma değişkenlerine karşı daha az hassas hale getirir (değişmezse).

Bir başka popüler seçenek, AB kanallarının AB uzayındaki renk ve öklid mesafelerini temsil ettiği LAB renk uzayı, insanın renk algısına daha iyi uyuyor. Yine, L kanalını (Luminance) göz ardı etmek algoritmayı aydınlatma farklarına karşı daha sağlam kılar.


7

Görebildiğim en iyi cevap şudur: RGB, RGB'nin renk gösterme şekli ile ilgili "uygulama detayları" ile ve HSV'nin "gerçek renk" bileşenleri ile yapması gerekenlerle ilgilidir. Bunu söylemenin bir başka yolu da RGB olacaktır, bilgisayarların rengi işleme şeklidir ve HSV, insanların renkleri algılayışımızın bileşenlerini yakalamaya çalışır .

Ayrıntılı olarak anlatacağım:

Renk, elektromanyetik dalgalara dayanan bir algıdır. Bu dalgaların doğal özellikleri, örneğin yoğunluk ve frekanstır. Bir ışık dalgasının frekansını kızılötesi ila ultraviyole arasında kaydırırsak, görsel olarak gökkuşağı renkleri boyunca bir renk değişimini algılayacağız. Gökkuşağı renkleri "saf renkler" olarak kabul edilebilir, çünkü bunlar tek frekanslı dalgalarla temsil edilir.

Artık insan gözü şaşırtıcı şekilde kırmızı, yeşil ve mavi değil, üç ana ışık frekansına yanıt verebilir veya "rezonans" yapabilir. Gerçek şu ki, bu yanıt doğrusal değildir, böylece retina verilen saf rengi (ve dolaylı olarak "frekansını") üç renk bileşeninin birleşik tepkisi ile ayırt edebilir .

RGB renk alanı, yalnızca retinamızın iç çalışmalarını taklit edecek şekilde mevcuttur, böylelikle bilgisayar ekranlarında renklerin büyük bir çoğunluğu, uygun bir (bilgisayar bakış açısıyla) 24 bitlik piksel rengi ile gösterilebilir. kodlama. RGB renk uzayının, doğal renk özellikleriyle, ne de insanın renk yorumlamasıyla özde bir ilişkisi yoktur.

Örneğin, RGB uzayda (örneğin, renk gradyanlarının oluşması) kanalda gerçekleştirilen herhangi bir aritmetik işlem, çok kaba ve hatta açıkça "yanlış" sonuçlar verir. Bu nedenle renk duraklarını RGB'den diğer renk alanlarına (HLS, Lab, vb.) Dönüştürerek, enterpolasyonları uygulayarak, sonra enterpolasyondaki değerleri RGB'ye geri dönüştürerek renk haritalarının yaratılması önerilir.

Bu yardımcı olur umarım!


2
Ben katılmıyorum. İki değil üç alan var: insan, bilgisayar ve fizik. RGB modeli, üç renk reseptörüne sahip insan gözünden türetilmiştir.
MSalters

@ MSalters aynı şeylerden bahsettiğimizi düşünüyorum (belki de kendimi tamamen netleştirememiş olmama rağmen). RGB ekranlar renk algılama sistemimize uyması için üretilmiştir. Bir bilgisayar karşı parçası var, (R, G, B) "koordinatları". Bu koordinatlar yerine rengin fiziksel, "gerçek doğası" özelliklerine uygulanmasına haritasına beri, bazı matematiksel vb işleme, örneğin algısal doğrusal gradyan interpolasyon, renk düzeltme, parlaklık ve doygunluk operasyonlar, gerçekleştirmek için uygun değildir
heltonbiker

2

HSV, Ton-Doygunluk Değeri anlamına gelir. Aslında bir renk düzlemi temsili türüdür (RGB, YCbCr vb.).

Aygıttan bağımsız bir renk sunum formatıdır: HSV renk temsili, belirli renk türlerini tespit etmek için kullanışlıdır, örneğin: ten rengi, ateş rengi vb.

MatlabRGB görüntüsünü HSV düzlemine dönüştürme işlevidir rgb2hsv('/inputimage_name').


1

Sana anlaman için bir örnek vereceğim. Bizim elimizde birçok parça hurma, arka hurma ve bunun altında. bu alanlarda farklı renk çeşitliliği görüyoruz, ancak tüm bu bölgeler için renk tonu fazla değişmiyor, bu nedenle renk tonu değeri el segmentasyonunda faydalı olabilir.


1

Bildiğim hiçbir şey, özellikle HSV'de YUV veya LAB ile karşılaştırıldığında, özellik çıkarımı ve aydınlatma değişmezliği veya görselleştirme için daha iyi hale getirecek kadar iyi. Sanırım konvansiyon ve süreklilik nedeniyle HSV daha yaygın kullanılanlardan biriydi: aynı renk alanını kullanıyorsanız sonuçları karşılaştırmak ve birbirleriyle iletişim kurmak daha kolay.

Bununla birlikte, HSV (RGB'nin tersine) bilgisayar vizyonunda bildiğim 2 nedenden dolayı kullanılıyor:

  1. Görselleştirme . Ne zaman bir resmin üzerine yoğun bir şekilde yön bilginiz varsa, HSV görselleştirme için iyi bir renk alanıdır. Bir görüntü üzerine küçük vektörler çizmek yerine (her şeyi karıştıracaklar), H (vektör açısı) ve S (vektör büyüklüğü) ile eşlenen yönlü vektörü koyarak HSV ile renk çizebilirsiniz. Bu, ne elde etmek istediğinize bağlı olarak herhangi bir şekilde ayarlanabilen Değer bileşenini bırakır. Middlebury optik akış veri setinden aşağıdaki örneğe bakın. HSV, yönleri yoğun bir şekilde görüntülemek için kullanılır.

Optik akışta middlebury DB'den örnek

  1. Diğer cevaplarda açıklandığı gibi özellik çıkarma ve aydınlatma değişmezliği .

0

Diğerlerinin de belirttiği gibi, lumayı kromadan ayırmak faydalıdır. Luma, sahnede nesneye düşen ışık miktarına göre büyük ölçüde değişir. Diğer taraftan Chroma, nesnenin kendine özgü özellikleri ile daha iyi korelasyon gösterir ve düzgün beyaz dengelenmiş görüntüler için daha fazla veya daha az değişmezdir.

Bununla birlikte, HSV, HSL veya aslında renk düzleminin kutupsal parametrelere sahip herhangi bir renk uzayının bu amaç için kötü seçimler olduğunu eklemek isterim. Bunun nedeni, grey çizgisinde tekilliği ortaya koymalarıdır (hangi renk gridir?), Onları gürültüye ve beyaz dengesine karşı çok hassas hale getirirler. Ek olarak, bir kutupsal koordinat sistemindeki iki renk arasında karşılaştırma yapmak o kadar kolay değildir. Ayrıca, HSV'deki değerin veya HSL'deki hafifliğin insan tarafından algılanan hafifliğe veya başka herhangi bir fiziksel enerji ölçüsüne karşılık gelmediğine dikkat edin.

Doğrusallığı (YCbCr, YUV) koruyarak veya insan görüşünü uygun şekilde (LUV, LAB) modellerken aynı luma-kroma ayrıştırmasını sağlayan çok sayıda doğrusal renk alanı vardır. Bunlarla kromatikliklerinde Euclidean L2 normunu kullanarak iki rengi karşılaştırabilirsiniz, bu da genel olarak daha sağlam bir algoritma oluşturur.

HSV / HSL neden bu kadar sık ​​kullanılıyor? Objektif bir cevap vermek zor. Tecrübelerime göre, çoğunlukla cehalet ve RGB-> HSV dönüşüm rutinlerinin mevcudiyetidir. Yazarları gama düzeltmeyi anlamayan kodlarla çalışmak zorunda kaldılar, farklı renk alanlarını bile. RGB'yi HSV'ye dönüştüren kod görüldükten sonra, görüntüyü modüler bir miktar olduğu gerçeğini göz ardı ederek renk tonuna göre bölümlere ayırdı. Bunun bilinçli kararların herhangi bir sebeple desteklenmediğine karar verebileceğimizi düşünüyorum.


-1

HSV renk modeli, insanların RGB, YUV, Lab vb. İle karşılaştırıldığında renkli nesneleri nasıl gördüğüyle daha fazla ilişkilidir.

Nesnenin ne renk olduğunu (Ton), ne kadar doyduğunu (Doygunluk) ve ne kadar beyaz ışığın üzerine düştüğünü (Intesity) görüyoruz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.