Bir görüntü işleme uygulamasında (eğlence için) biraz iş yapıyorum ve ColorMatrix dönüşümlerinin nasıl çalıştığını tam olarak anlamak için uğraşıyorum. Lineer/afinite dönüşümlerinin temellerini alıyorum ve örnekleri çevrimiçi olarak çoğaltarak iyice anlayabilirim, ancak niçin niçin çalıştığından emin olmak yerine bir şeyler yapabilmeyi isterim. Bunu negatif üretilmesi için bir görüntü üzerinde basit bir dönüşüm yapma ÖrneğinColorMatrix dönüşümlerinin nasıl çalıştığı hakkında açıklama
, (her bir renk, ilgili ücretsiz dönüştürülür) aşağıdaki matrisini kullanır: I -1 180degrees kosinüs olduğunu anlamak
[-1, 0, 0, 0, 0]
[0, -1, 0, 0, 0]
[0, 0, -1, 0, 0]
[0, 0, 0, 1, 0]
[1, 1, 1, 0, 1]
Bu, tamamlayıcıya bir rengi "döndürmek" için gerekli olan dönüşdür, ama anlamadığım şey, bir renk vektörünün yukarıdaki matrisle nasıl çarpılabileceğidir ve doğru tamamlayıcı vektörü nasıl üretebileceğidir. Örneğin, bir piksel [247, 255, 0, 255, 1] (RGBAW alanını kullanarak) renk vektörüne sahipse, çarpmanın yukarıdaki matrise göre gerçekleştirilmesi durumunda [-247, -255, 0, 255, 1], fakat yukarıdakilerin gerçek tamamlayıcı rengi olduğu için bu doğru değildir [8, 0, 255, 255, 1].
Burada bariz bir şey eksik ve yaptığım şeyden tamamen emin olmadığımı itiraf etmekten mutluluk duyuyorum :) Dönüştürülen renk vektörü başka bir koordinat sisteminde mi temsil ediliyor? (ör., 0-255 değil)
Anlayışımın "kayıp bağlantısı" konusunda yardımcı olabilecek herhangi biri varsa, gerçekten minnettar olurum.
Düzenleme
Sadece aşağıdaki matris da çalışır ve aslında (doğru vektör üretir) mathemtically sezgisel olduğunu keşfetti.
-1 0 0 0 0
0 -1 0 0 0
0 0 -1 0 0
1 1 1 1 0
0 0 0 0 1
Bu yüzden yeni sorum şu: bu matrislerin ikisi de neden çalışıyor? Sonuncusu bana daha cebri bir perspektiften neden çalıştığını anlayabildiğimden daha tatmin edici bir çözüm sunuyor. Dört sıra ölçekleme için kullanılır mı? Ve eğer öyleyse, ölçekleme neden 255 ekler? Bu değeri nereden alıyor?
Bunlar gerçekten aptal sorularsa özür dilerim, bunu aşağıya indirmeye çalışıyorum.
Ardından, alt satırda 1-s'yi unutuyorsunuz. Onlar eklenir (255 ölçeklendirilir). 255 + -247 = 8. –
Gerçekten mi? Alt satırın çeviri için ölçeklendirmenin yapılmadığını mı düşündüm? –
Gerçek matris cebiri üretemediğinden bunun neden işe yaradığını anlamıyorum 8. Matriste belirli bitlere özel kurallar uygulayan ColorMatrix sınıfı mı? –