PixelMath Hata Ayıklama¶
Sayfa Bilgisi
Kategori: PixelMath · Düzey: Advanced · Tahmini okuma: 3 dk
Anahtar kelimeler: PixelMath hata ayıklama · wrong PixelMath · PixelMath error · expression syntax · kanal karışımı
Önerilen ön bilgiler: Process Icons · Maske Mantığı
Amaç¶
Parser, identifier, geometry, channel, range ve numerical safety sorunlarını belirtilerden kök nedene sistematik biçimde ayırmaktır.
Debugging strateji¶
flowchart TD
fail["Hata veya yanlış output"] --> parse{"Expression parse oluyor mu?"}
parse -- "Hayır" --> syntax["Identifier, operator, parentheses"]
parse -- "Evet" --> geometry{"Dimensions/channels uyumlu mu?"}
geometry -- "Hayır" --> align["Geometry ve channel düzelt"]
geometry -- "Evet" --> range{"Range finite ve beklenen mi?"}
range -- "Hayır" --> numeric["Division, NaN, clipping"]
range -- "Evet" --> logic["Mapping, mask ve state kontrolü"]
Hata matrisi¶
| Hata | Belirtiler | Olası nedenler | Doğrulama | Düzeltme İş Akışı |
|---|---|---|---|---|
| Identifier not found | İşlem başlamaz | Typo/renamed window | Window identifier list | Identifier’ı yeniden seç |
| Dimension mismatch | Geometry error | Farklı crop/registration | Dimensions property | Register/crop eşleştir |
| Channel mismatch | Mono/RGB error | Yanlış channel expression | Channel count | Separate expressions/output düzelt |
| Invalid expression | Parser error | Operator/function/parentheses | İfadeyi küçült | Minimal expression’dan kur |
| Unexpected clipping | 0/1 yığılması | Coefficient/range overflow | Statistics/histogram | Weight/normalization düzelt |
| Black output | Zero branch, invalid scale | Koşul/identifier/range | Ara expressions | Branch’leri ayrı üret |
| White output | Saturation/Inf | Division veya büyük coefficient | Max/finite test | Denominator guard |
| Unexpected colors | Mapping ters | R/G/B expressions | Channels ayrı görüntüle | Mapping’i düzelt |
| NaN propagation | Invalid domain | Division by zero/log invalid | Ara output finite check | Guard condition ve epsilon |
| Division by zero | Denominator zero | Background/mask zero | Denominator image | Safe normalization veya farklı yöntem |
Pratik Karar Rehberi¶
| Durum | Öneri | Gerekçe |
|---|---|---|
| Parser error | Minimal expression | Hatalı token izole edilir |
| Wrong color | Channel-by-channel output | Mapping doğrudan görülür |
| Black/white image | Rescale kapalı Statistics | Gerçek numeric range görünür |
| Complex recipe | Intermediate images | Evaluation chain ayrılır |
| Replace target risk | New image | Geri dönüş ve karşılaştırma kolaydır |
Debug iş akışı¶
- Orijinal images ve process icon’u saklayın.
- Expression’ı en küçük çalışan alt ifadeye indirin.
- Her input identifier/dimensions/channels kontrol edin.
- Mask/weight/denominator’ı ayrı image olarak üretin.
- Min/max/mean, NaN/Inf ve channel histogramlarını inceleyin.
- Rescale/clamp seçeneklerinin problemi gizlemediğini doğrulayın.
- Son adımda replace target kullanın.
Yaygın Hatalar ve En İyi Uygulamalar¶
Error mesajının ilk satırını atlamak, birden fazla değişkeni aynı anda değiştirmek, output’u STF ile normal sanmak, 0/0 riskini görmezden gelmek ve wrong mapping’i color grading ile düzeltmek başlıca hatalardır.
İkili Arama
Uzun expression’ın yarısını geçici sabitle değiştirerek hangi alt bölümün hatalı olduğunu hızlıca izole edin.
Performans ve sınırlamalar¶
Karmaşık expression, çok sayıda full-resolution image ve temporary output bellek/swap kullanımını artırır. Debug Preview kullanın; finali full frame’de yeniden doğrulayın. Syntax success semantic correctness değildir.