Önce özete göz atDersin sonundaki özet, okumaya başlamadan önce yol haritası olarak.
- Gökbilimsel görüntüler çoğunlukla FITS biçiminde saklanır; bir FITS dosyası başlık ve veri birimlerinden oluşur, her başlık 80 karakterlik kayıtlardan, her birim 2880 baytın katlarından oluşur ve dosya görüntünün yanında tablolar da taşıyabilir.
- Başlık, verinin bağlamını ve dünya koordinat sistemini taşır: Atbaşı örneğinde 1990'daki bir fotoğraf plakasının 65 dakikalık pozunu, bir pikselin yaklaşık bir yay saniyesi olduğunu ve görüntü ortasının bulutsunun 1,75 yay dakikası yakınına düştüğünü okuduk.
- Ham görüntü neredeyse siyah görünür, çünkü değer aralığı çok geniştir; germe ile görünür hâle gelir. Renkli görüntüler, farklı süzgeçlerin gri görüntüleri kısa dalga boyu mavi, uzun dalga boyu kırmızı olacak biçimde kanallara atanarak yapılır.
Kanca
James Webb Uzay Teleskobu'nun Yaratılış Sütunları görüntüsünü görmüşsündür: altın rengi toz sütunları, mavi bir gökyüzü, kırmızı parıltılar. Webb'in görüntü uzmanlarına göre bu görüntünün ham dosyaları ilk açıldığında neredeyse tamamen siyahtır. Renkli de değildir. Her biri tek bir süzgeçle çekilmiş, gri tonlarda bir sayı tablosudur.
Gördüğün renkler kameradan değil, sonradan, bilimsel bir kurala göre geliyor. Ama ondan önce o sayıların bir yerde, bir biçimde saklanması gerekiyor. Gökbilimciler onlarca yıldır bunun için ortak bir dosya biçimi kullanıyor.
Merkezi soru
Gökbilimsel görüntüler hangi dosya biçiminde saklanır, bu dosyanın içinde neler vardır, ve böyle bir dosyayı Python'la açıp bir sayı tablosunu nasıl bir resme dönüştürebilirsin?
Anlatım
Bir fotoğraf değil, bir ölçüm
Telefonundaki bir fotoğraf, sana güzel görünsün diye sıkıştırılmış, renkleri ayarlanmış, bazı bilgileri atılmış bir dosyadır. Gökbilimci için bu kabul edilemez. Bir pikselin değeri, o noktaya düşen ışığın ölçümüdür; ondan bir yıldızın parlaklığını, bir galaksinin uzaklığını hesaplayacağız. O sayının bozulmadan saklanması gerekir.
NASA'nın FITS el kitabına göre FITS, yani Esnek Görüntü Taşıma Sistemi (Flexible Image Transport System), gökbilimde bilimsel veriyi taşımak, çözümlemek ve arşivlemek için en yaygın kullanılan biçimdir. Kitap şunu vurgular: FITS, JPG ya da GIF gibi bir görüntü biçiminden çok daha fazlasıdır; asıl amacı çok boyutlu sayı dizilerini ve satır sütun tablolarını saklamaktır. Biçimin güncel sürümü, 4.0, Uluslararası Astronomi Birliği'nin FITS çalışma grubu tarafından 22 Temmuz 2016'da onaylandı.
Başlık ve veri
Bir FITS dosyası, başlık ve veri birimlerinden oluşur; el kitabı bunlara başlık/veri birimi (header/data unit, kısaca HDU) der. İlki birincil birimdir. Başlık, düz metinle yazılmış bir künye gibidir. Her satırı tam 80 karakterlik bir kayıttır: önce en fazla sekiz harfli bir anahtar sözcük, sonra eşittir işareti ve değer, sonra eğik çizgi ve bir açıklama.
Başlığın hemen ardından veri gelir: bir spektrum için tek boyutlu, bir görüntü için iki boyutlu, bir veri küpü için üç boyutlu bir sayı dizisi. Birincil birimden sonra istenildiği kadar ek birim, el kitabının deyişiyle uzantı, eklenebilir: başka görüntüler ya da tablolar. Böylece tek bir dosya, bir görüntüyü, onun hata haritasını ve bir yıldız kataloğunu birlikte taşıyabilir.
Sayıların türü de başlıkta yazılıdır. El kitabına göre birincil dizi 1, 2 ya da 4 baytlık tam sayılardan ya da 4 veya 8 baytlık ondalıklı sayılardan oluşabilir. BITPIX kaydı bunu söyler: 8, 16 ve 32 tam sayıyı, eksi 32 ve eksi 64 ise ondalıklı sayıyı gösterir. Tam sayı yer kazandırır; ondalıklı sayı ise işlenmiş, kalibre edilmiş verinin inceliklerini korur. Bir dosyayı açtığında önce bu kayda bakmak, elindeki sayıların nasıl okunacağını gösterir.
Gerçek bir dosyayı açalım
Astropy'nin öğretici verileri arasında Atbaşı Bulutsusu'nun bir görüntüsü var. Dosyayı indirmek için «from astropy.utils.data import download_file», açmak için «from astropy.io import fits» yazarız. «fits.info(dosya)» bize dosyanın içindekileri listeler.
Bizim çalıştırdığımızda iki birim çıktı. Birincisi 891 × 893 piksellik bir görüntü, her piksel 16 bitlik bir tam sayı. İkincisi 1600 satır ve dört sütunluk bir tablo. Başlığı okumak için «fits.getheader(dosya)» yazarız; 161 kayıt çıktı. İlk satırlar her FITS dosyasında aynıdır: SIMPLE, dosyanın standarda uyduğunu; BITPIX, her pikselin kaç bit olduğunu; NAXIS, kaç boyut olduğunu; NAXIS1 ve NAXIS2, her boyutun uzunluğunu söyler.
Sonraki satırlar bu görüntünün hikâyesini anlatıyor. Anahtar sözcükler, görüntünün güney yarımküredeki UK Schmidt teleskobuyla, bir fotoğraf plakası üzerine, 22 Aralık 1990'da, 65 dakikalık pozla çekildiğini ve sonra taranarak Uzay Teleskobu Bilim Enstitüsü'nün Dijital Gökyüzü Taraması'na eklendiğini kaydediyor. Bir JPG dosyası bunların hiçbirini söylemez.
Çözümlü problem: Dosya neden bu boyutta?
El kitabına göre her başlık ve veri birimi 2880 baytın katı uzunluğundadır; eksik kalan kısım boşlukla doldurulur. 2880 bayt, 80 karakterlik 36 kayda denk gelir. Başlıkta 161 kayıt var: 161 / 36 ≈ 4,5, yani beş bloğa yuvarlanır. Başlık 5 × 2880 = 14.400 bayt tutar. Sesli okunuşu: yüz altmış bir bölü otuz altı, yukarı yuvarlanınca beş; beş çarpı iki bin sekiz yüz seksen, on dört bin dört yüz bayt.
Veri: 891 × 893 piksel, her biri 16 bit, yani 2 bayt. 891 × 893 × 2 = 1.591.326 bayt. 2880'e bölünce 552,5 çıkar; 553 bloğa yuvarlanır, yani 1.592.640 bayt. Tablonun birimiyle birlikte bütün dosya, bizim ölçtüğümüzde, 1.650.240 bayt, tam 573 blok çıktı. Sesli okunuşu: sekiz yüz doksan bir çarpı sekiz yüz doksan üç çarpı iki, bir buçuk milyon bayta yakın. Dosyanın her baytı hesaplanabilir; hiçbir şey sıkıştırma algoritmasının keyfine bırakılmamış.
Pikselden gökyüzüne
Bir pikselin gökyüzünde nereye düştüğünü de başlık söyler. Dünya koordinat sistemi (World Coordinate System, WCS) denen bir anahtar sözcük takımı, piksel numaralarını gök koordinatlarına çeviren kuralı taşır. Astropy'de «from astropy.wcs import WCS» ile bu kuralı başlıktan okuruz; «w.pixel_to_world(445, 446)» görüntünün ortasındaki pikselin koordinatını verir.
Bizim hesabımızda görüntünün ortası sağ açıklıkta yaklaşık 85,27, dik açıklıkta yaklaşık eksi 2,46 derece çıktı. Önceki dersteki «SkyCoord.from_name» ile Atbaşı Bulutsusu'nu sorup iki nokta arasındaki açıyı ölçünce 1,75 yay dakikası bulduk. Görüntü gerçekten Atbaşı'nın üstünde.
Çözümlü problem: Bir piksel gökyüzünde ne kadar?
Başlıktaki CD1_1 adlı kayıt, bir pikselin yatay yönde kaç derece olduğunu söyler: yaklaşık 0,00028 derece. Bir derecede 3600 yay saniyesi olduğundan, 0,00028 × 3600 ≈ 1,0 yay saniyesi. Sesli okunuşu: sıfır virgül sıfır sıfır sıfır yirmi sekiz çarpı üç bin altı yüz, yaklaşık bir yay saniyesi.
Görüntünün genişliği 891 piksel, yani yaklaşık 891 yay saniyesi, bu da 15 yay dakikası kadar. Dolunayın çapı ise yarım dereceye, yani 30 yay dakikasına yakındır. Bu görüntü, dolunayın yarısı genişliğinde bir gökyüzü parçası.
Neden ilk açılışta siyah?
Webb'in görüntü uzmanları, ham görüntülerin neredeyse siyah göründüğünü, bunun bilgi olmadığı anlamına gelmediğini anlatır. Webb'in her pikseli 65.000'i aşkın gri tondan birini alabilir; ekranımız ve gözümüz bu kadar geniş bir aralığı aynı anda gösteremez. Gökyüzü de çoğunlukla karanlıktır: ilginç ayrıntılar değerlerin alt ucunda gömülüdür.
Bizim dosyamızda da durum aynı. Piksel değerleri 3759 ile 22.918 arasında; ortanca değer 9658. Değerlerin yüzde 98'i 5226 ile 16.049 arasında kalıyor. En parlak birkaç yıldız bütün ölçeği kendine çekiyor. Bu yüzden görüntüyü göstermeden önce germe (stretch) yaparız: ölçeği, değerlerin çoğunun bulunduğu aralığa göre ayarlarız. Webb uzmanları da en karanlık pikselleri parlatıp parlaklardaki ayrıntıyı koruyan matematiksel bir işlev kullanır.
Python'da bunun en basit yolu yüzdeliklerdir. «import numpy as np» ile sayısal araçları çağırır, «alt, ust = np.percentile(veri, [1, 99])» ile iki sınırı buluruz. Sonra görüntüyü çizerken yalnızca bu aralığı gösteririz. Siyah bir kare, birdenbire bir toz bulutunun içinden yükselen bir at başına dönüşür.
Renk nereden geliyor?
Webb makalesine göre renkli bir görüntü için farklı süzgeçlerle çekilmiş gri görüntüler mavi, yeşil ve kırmızı kanallara atanır. Kural kromatiktir: en kısa dalga boyu maviye, biraz daha uzunu yeşile, en uzunu kırmızıya gider. Üçten fazla süzgeç varsa araya mor, turkuaz ve turuncu eklenir.
Yani Webb'in gördüğü kızılötesi ışık, gözümüzün göremediği bir aralıkta olsa da, dalga boylarının sırası korunarak görünür renklere taşınır. Renk uydurulmaz; bir kurala göre çevrilir. Kendi renkli görüntünü yapmak istediğinde de bu kuralı izleyebilirsin.
Aslında…
Yaygın yanlış✗ "Uzay teleskopları, telefonlarımız gibi renkli fotoğraf çeker; gördüğümüz renkler cisimlerin gerçek renkleridir." ✓ Webb gibi teleskopların dedektörleri her seferinde tek bir süzgeçten gelen ışığı ölçer ve gri tonlarda bir sayı tablosu kaydeder.
Renkli görüntü, farklı süzgeçlerin görüntülerinin mavi, yeşil ve kırmızı kanallara, en kısa dalga boyu maviye ve en uzunu kırmızıya gidecek biçimde atanmasıyla oluşur. Kızılötesi gibi gözümüzün hiç göremediği ışık da bu yolla görünür renklere çevrilir. Yanılgı, gündelik fotoğrafçılıktan gelen alışkanlıktan doğuyor: telefonumuzun kamerası da aslında süzgeçli piksellerle çalışır, ama bunu bize göstermeden yapar.
Büyük resim
FITS, gökbilimin ortak hafızasıdır. Onlarca yıl önce çekilmiş bir fotoğraf plakası ile Webb'in dün indirilen görüntüsü aynı dille saklanır; aynı birkaç satır kodla açılır. Bu, eski ve yeni gözlemleri yan yana koyup bir yıldızın zaman içinde değişip değişmediğini sormayı mümkün kılar.
Başlıktaki her kayıt, verinin bağlamıdır: ne zaman, nerede, hangi aletle, hangi süzgeçle çekildiği. Bağlamı olmayan bir sayı ölçüm değildir. Bir sonraki derste, bu dosyaların saklandığı ve herkese açık dev arşivlere gideceğiz.
Özet
- Gökbilimsel görüntüler çoğunlukla FITS biçiminde saklanır; bir FITS dosyası başlık ve veri birimlerinden oluşur, her başlık 80 karakterlik kayıtlardan, her birim 2880 baytın katlarından oluşur ve dosya görüntünün yanında tablolar da taşıyabilir.
- Başlık, verinin bağlamını ve dünya koordinat sistemini taşır: Atbaşı örneğinde 1990'daki bir fotoğraf plakasının 65 dakikalık pozunu, bir pikselin yaklaşık bir yay saniyesi olduğunu ve görüntü ortasının bulutsunun 1,75 yay dakikası yakınına düştüğünü okuduk.
- Ham görüntü neredeyse siyah görünür, çünkü değer aralığı çok geniştir; germe ile görünür hâle gelir. Renkli görüntüler, farklı süzgeçlerin gri görüntüleri kısa dalga boyu mavi, uzun dalga boyu kırmızı olacak biçimde kanallara atanarak yapılır.
Görev
Quiz
- FITS neden JPG gibi gündelik görüntü biçimlerinin yerine kullanılır?
- Bir FITS başlığındaki her kayıt kaç karakterdir ve her birim hangi sayının katlarından oluşur?
- Atbaşı dosyasının başlığı, 161 kayıtla, kaç baytlık yer kaplar ve neden?
- Ham gökbilimsel görüntüler ilk açıldığında neden neredeyse siyah görünür?
- Webb'in renkli görüntülerinde renkler hangi kurala göre atanır?
Cevaplar
- Çünkü pikseldeki ölçümü bozmadan, sıkıştırıp değiştirmeden saklar ve görüntüyle birlikte başlıkta gözlemin bağlamını, koordinatlarını ve tabloları taşıyabilir.
- Her kayıt 80 karakterdir; her başlık ve veri birimi 2880 baytın katıdır.
- 14.400 bayt; 36 kayıt bir 2880 baytlık blok ettiğinden 161 kayıt beş bloğa yuvarlanır.
- Çünkü piksel değerlerinin aralığı ekranın gösterebileceğinden çok geniştir ve ilginç ayrıntılar değerlerin alt ucunda kalır; germe yapılmadan görünmez.
- Kromatik olarak: en kısa dalga boyundaki süzgeç maviye, ortadaki yeşile, en uzunu kırmızıya atanır.
Kaynaklar
Sonraki derse köprü
Bu derste Astropy'nin öğretici dosyalarından birini açtık. Ama aynı biçimde saklanmış milyonlarca gerçek gözlem, Hubble'dan Webb'e, Gaia'dan Sloan taramasına, herkese açık arşivlerde duruyor. Profesyonel gökbilimcilerin kullandığı verinin çoğu ücretsiz. Bu arşivler hangileri, ve onlardan istediğin veriyi nasıl bulup indirebilirsin?