sonBAHAR’ın kodlama dersleri: Bölüm 3

Bir önceki yazılarımızda bütün ham verilerimizi oluşturmuştuk. Şimdi ise bu matrislerin yapısını, içeriğini ve fonksiyonlarını inceleyeceğiz.

ic-kisim

Yukarıda görmüş olduğumuz QR kodunun iç yapısında bu kısımlara hiç bir şekilde değişiklik yapamıyoruz. Bütün hepsinde bu alanlar standarttır ve değişiklik yapılmaz. Sadece kodlama yapılırken maske desenleri ve hata düzeltme düzeyi farklı desenlerde olduğu için onlar değişir ama biz bu kısımlara el sürmüyoruz. Sarı kısımlar format (biçim) ve sürüm bilgisini göstermektedir. Hata düzeltme seviyesi (ECL) ve maske değerleri de bu kısma dahildir. Ayrıntılı olarak göreceğiz.

Finder Patterns (Bulucu desenler): QR kodu köşelerinde üç blok olmak üzere sol üst, sağ üst ve  sol altta bulunur.
Ayırıcılar: Görmüş olduğunuz gibi bulucu desenlerin yanında yer alırlar.
Timing pattern: Bulucu desenleri bağlamak için noktalı çizgilerdir. Sabittirler, desenleri değişmez.
Dark module (kara nokta): Her zaman sol alt bulucu desenin yanına tek bir siyah modül olarak yerleştirilir. Öyle sabit duruyor orada arkadaşlar. :) Yine ellemiyoruz tabi.
Daha sonra veri bitleri yerleştireceğiz. QR kodlarında veri bitleri yerleştirirken sağ alttan başlanır ve yukarıya doğru yerleştirilir şekil 1 de görüldüğü gibi. Fakat onunda bir üslubu var. Mesela Şekil 3 de sağ alt köşeden başlıyorsunuz sola doğru zikzak şeklinde yerleştiriyorsunuz. Şekil 2 de ise yukarıya çıktığınız zaman izleyeceğiniz yol gösterilmektedir. Bitleri aynen şekilde gördüğümüz gibi yerleştiriyoruz.

  sekil2  
Şekil 1                           Şekil 2                                Şekil 3

Gelelim hangi kutu ne işe yarıyor ve mesajları nereden okuyacağız.

ENC: Encoding Data anlamına gelip ilk başta belirttiğimiz mod göstergesidir, hatırlayalım:
modgostergesi
Mesajın uzunluğu ise tahmin ettiğiniz gibi karakter uzunluğumuz. Mor olan kısımları görüyorsunuz, o kısımlar mesajın kendisini oluşturuyor. Byte modda mesela her karenin ayrı bir değeri var decoding kısmında daha detaylı göreceğiz. Alfanümerik modda ise 2 karakter başına 11 bit olacağından, çift olarak harfleri decode ediyoruz hatırlayın ilk bölümden. Mesajların yerleşimi mor kısım. E1, E2 olan kısımlar hata düzeltme codewords’lerimiz. Nasıl oluşturduğumuzu ikinci bölümde görmüştük. END gördüğümüz alan aslında mesajın sonuna terminator (sonlandırıcı) koyduğumuz kısımdır. Görüldüğü üzere 0000 yani 4 adet beyaz görürseniz bu mesaj sonu demektir. Orada message data’lar biter ve Error correcting başlar.
Ham verimizi yerleştirdikten sonra maskeleme yapıyoruz, örnek maskelemeler aşağıdaki şekilde verilmiştir:

data-maskeleri

i: satır sayısını ve j: sütun sayısını göstermektedir. 21 x 21 lik bir QR kodu için koordinatlarımız (0,0) dan sol üst kısımdan başlar ve (20,20) de biter. Maskeleme belli modülleri ters çevirir. Şöyle ki; siyah desenler beyaz olur ve beyaz desenler siyah olur. Tabi belirli kısımlar hariç, bunları iç yapıda göstermiştik. Her maskenin ayrı bir deseni var. Bu şekilde QR kodları şekilde görmüş olduğunuz desenlerle maskelenip oluşturulur.
QR kodları için 8 maskeleme desenimiz olduğunu söylemiştik. Tabloda göreceğimiz maske desen göstergesi 3 bit uzunluğunda ikili gösterim (binary) şeklindedir.

maskedesen

“Mod”, kalan hesaplama “div” ise tamsayı bölme anlamına gelir.

Mesela maske desen 000 ….
(20,20) de: (20 + 20) mod 2 = 0 ve bitleri tersine çevir. (Siyah ise beyaz.. gibi.)
(19,20) de: (20 + 19) mod 2 = 1 ve bitler olduğu gibi kalır. (Siyah ise siyah.. gibi.)

Bir sonraki yazımızda format (biçim) ve versiyon bilgisini tanımlayacağız. Şimdilik hoşçakalın ve takipte kalın.

About Bahar Uğurdoğan

Kriptolojistimsi.

One thought on “sonBAHAR’ın kodlama dersleri: Bölüm 3

  1. I have to thank you for the efforts you have put in writing this site.
    I’m hoping to see the same high-grade blog posts from you in the future as
    well. In fact, your creative writing abilities has inspired me to get my own, personal site now ;
    )

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>