Video işleme için FPGA tabanlı bir donanım platformu
FPGA based a hardware platform for video processing
Yazar: VECDİ EMRE LEVENT
Danışman: DOÇ. DR. FETHULLAH KARABİBER
Yıldız Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2015
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Elektrik donanımı = Electric equipment ; Sayısal görüntü işleme = Digital image processing

Özet:
Günümüzde yüksek işlem gücü gerektiren uygulamalarda, donanımsal olarak sabit mimariye sahip olan mikrokontrolörler, bilgisayarlar tek başlarına ihtiyaç duyulan performansı verememektedir. Sabit donanım yapısına sahip olan işlemcileri kullanmak yerine uygulamaya özgü geliştirilen çip tasarımları gerçeklemesi performans bakımından ihtiyaca cevap verebilmektedir. Çip tasarımlarında standart mimariden farklı olarak merkez işlem birimi bulunmaz. Bunun yerine çipin içerisindeki farklı bölgelerde tasarımcı tarafından belirtilmiş olan donanımlar çalışır. Dolayısıyla FPGA içerisinde paralel çalışan donanımların hesaplama gücü karşısında sabit mimarinin rekabet etme şansı olmamaktadır.

Özellikle görüntü işleme algoritmalarında, çözünürlük ve saniye başına işlenmesi gereken kare sayısı ile doğru orantılı olarak yüksek işlem gücüne ihtiyaç duyulmaktadır. Bunun gibi durumlarda sabit donanıma sahip olan mimariler ancak gerçek zamanlı olmayan, yani daha önceden kayıtlı olan bir video veya görüntünün işlenmesini gerçekleştirebilmektedir. Ancak gerçek zamanlı hesaplama ihtiyacı olduğunda, sabit mimariler ardışık gelen karelerin üzerinde koşması gereken algoritmayı gerekli zaman aralığında çalıştıramayacaklar ve sistem gerçek zamanlı özelliğini yitirecektir. FPGA üzerinde koşacak olan algoritmanın en fazla kazanç sağlayabilmesi, algoritmadaki akışta ne kadar paralel işlem yapmaya müsait olduğu ile doğru orantılıdır.

Bu çalışmada görüntü işleme sistemi iskeleti sunulmaktadır. Görüntü işleme uygulamalarında yaygın olarak kullanılan ortanca, gauss, sobel gibi filtrelerin donanım uygulamaları gerçeklemesi yapılmıştır. Bu sistem hem FPGA hem de işlemci ile birlikte çalışan heterojen bir yapıdadır. Sistem, işlemci ile işlenecek olan görüntünün ve hangi algoritma koşacağının bilgilerini FPGA'e aktarır, FPGA üzerinde işlenmiş olan görüntü, işlemciye geri aktarılmaktadır. Tasarımın bu yapıda olması sistemin yeniden kullanılabilirliğini arttırmakta ve başka sistemler için altyapı özelliği taşımaktadır. Tezde kullanılan UDP, ARP, DHCP protokolleri, HDMI yakalama ve aktarım yöntemi, EDID veri akışı gibi yapıların detayları paylaşılmıştır. Tasarımda verilen modüllerin çalışma prensipleri detaylıca açıklanmış, bu bilgiler referans alındığında diğer sistemlere entegrasyonu hızı artacaktır.
Çalışma üzerinde Xilinx Spartan6 serisi LX-45 modeli FPGA bulunan Digilent firmasının Atlys FPGA geliştirme kartı kullanılarak geliştirilmiştir. Geliştirme kartının üzerinde dahili olarak bulunan HDMI, Ethernet ve DRAM arayüzleri kullanılmıştır. Sistemin akışında öncelikle HDMI portu üzerinden alınan yüksek çözünürlüklü görüntü, görüntü işleme modülüne aktarımı gerçekleştirilmektedir. Görüntü işleme modülünden çıkan veriler, görüntü sıkıştırma modülüne aktarılmaktadırlar. Görüntü sıkıştırma, görüntünün işlemciye aktarılması esnasında daha az bant genişliği kullanması için önemlidir. Bu işlemden sonra sıkıştırılmış görüntünün DRAM üzerinde tamponlanma işlemi gerçekleşmektedir. Son aşamada ise görüntü Ethernet modülü üzerinden işlemciye aktarım sağlanmaktadır. İşlemci tarafında ise geliştirilen .Net uygulaması ile görüntünün alınması, ekrana gösterilmesi ve FPGA üzerinde koşacak algoritmanın seçilebildiği bir arayüz kullanıcıya sunulmuştur.

Abstract:
Günümüzde yüksek işlem gücü gerektiren uygulamalarda, donanımsal olarak sabit mimariye sahip olan mikrokontrolörler, bilgisayarlar tek başlarına ihtiyaç duyulan performansı verememektedir. Sabit donanım yapısına sahip olan işlemcileri kullanmak yerine uygulamaya özgü geliştirilen çip tasarımları gerçeklemesi performans bakımından ihtiyaca cevap verebilmektedir. Çip tasarımlarında standart mimariden farklı olarak merkez işlem birimi bulunmaz. Bunun yerine çipin içerisindeki farklı bölgelerde tasarımcı tarafından belirtilmiş olan donanımlar çalışır. Dolayısıyla FPGA içerisinde paralel çalışan donanımların hesaplama gücü karşısında sabit mimarinin rekabet etme şansı olmamaktadır. 
Özellikle görüntü işleme algoritmalarında, çözünürlük ve saniye başına işlenmesi gereken kare sayısı ile doğru orantılı olarak yüksek işlem gücüne ihtiyaç duyulmaktadır. Bunun gibi durumlarda sabit donanıma sahip olan mimariler ancak gerçek zamanlı olmayan, yani daha önceden kayıtlı olan bir video veya görüntünün işlenmesini gerçekleştirebilmektedir. Ancak gerçek zamanlı hesaplama ihtiyacı olduğunda, sabit mimariler ardışık gelen karelerin üzerinde koşması gereken algoritmayı gerekli zaman aralığında çalıştıramayacak ve sistem gerçek zamanlı özelliğini yitirecektir. FPGA üzerinde koşacak olan algoritmanın en fazla kazanç sağlayabilmesi, algoritmadaki akışta ne kadar paralel işlem yapmaya müsait olduğu ile doğru orantılıdır.
 
Bu çalışmada bir görüntü işleme sistemi iskeleti sunulmaktadır. Görüntü işleme uygulamalarında yaygın olarak kullanılan ortanca, gauss, sobel gibi filtrelerin donanım uygulamaları gerçeklemesi yapılmıştır. Bu sistem hem FPGA hem de işlemci ile birlikte çalışan heterojen bir yapıdadır. Sistem, işlemci ile işlenecek olan görüntünün ve hangi algoritma koşacağının bilgilerini FPGA'e aktarır, FPGA üzerinde işlenmiş olan görüntü, işlemciye geri aktarılmaktadır. Tasarımın bu yapıda olması sistemin yeniden kullanılabilirliğini arttırmakta ve başka sistemler için altyapı özelliği taşımaktadır. Tezde kullanılan UDP, ARP, DHCP protokolleri, HDMI yakalama ve aktarım yöntemi, EDID veri akışı gibi yapıların detayları paylaşılmıştır. Tasarımda verilen modüllerin çalışma prensipleri hakkında detaylıca bilgi verilmiştir. Bu bilgiler referans alındığında, verilen modüllerin diğer sistemlere entegrasyon hızı artacaktır.
 Bu çalışma üzerinde Xilinx Spartan6 serisi LX-45 modeli FPGA bulunan Digilent firmasının Atlys FPGA geliştirme kartı kullanılarak bir görüntü işleme sistemi geliştirilmiştir. Geliştirme kartının üzerinde dahili olarak bulunan HDMI, Ethernet ve DRAM arayüzleri kullanılmıştır. Sistemin akışında öncelikle HDMI portu üzerinden alınan yüksek çözünürlüklü görüntü, görüntü işleme modülüne aktarımı gerçekleştirilmektedir. Görüntü işleme modülünden çıkan veriler, görüntü sıkıştırma modülüne aktarılmaktadırlar. Görüntü sıkıştırma, görüntünün işlemciye aktarılması esnasında daha az bant genişliği kullanması için önemlidir. Bu işlemden sonra sıkıştırılmış görüntünün DRAM üzerinde tamponlanma işlemi gerçekleşmektedir. Son aşamada ise görüntü Ethernet modülü üzerinden işlemciye aktarım sağlanmaktadır. İşlemci tarafında ise geliştirilen .Net uygulaması ile görüntünün alınması, ekrana gösterilmesi ve FPGA üzerinde koşacak algoritmanın seçilebildiği bir arayüz kullanıcıya sunulmuştur.
Geliştirilen sistem üzerinde farklı filtreler uygulanarak performansı ölçülmüştür. Bu ölçümler Matlab, OpenCV ve GPU üzerinde gerçeklenen uygulamaların performansları geliştirilen sistemin performansı ile karşılaştırılarak sistemin başarımı gösterilmiştir.