Median_Filter ortalama filtreleme algoritmasının gerçekleştirilmesi

ChinaAET "Elektronik Uygulama Teknolojisi" referans almaya değer bir makale yayınladı "FPGA'ya Dayalı Gerçek Zamanlı Medyan Filtrenin Donanım Uygulaması" Bu makale, gerçek zamanlı medyanı gerçekleştirmek için FPGA + SRAM kullanır Shift_RAM yeterlidir). Tamam, konuyu değiştirin. Şu anki odak noktamız 9 değerin ortalamasını nasıl hızlı bir şekilde bulacağımızdır. Bu makale, aşağıdaki şekilde gösterildiği gibi bir tür hızlı sıralama yöntemi sunar:

Şekilden de görülebileceği gibi, önce her satırdaki 3 pikseli sıralayın ve ardından üç maksimumun minimumunu, minimumların maksimumunu ve medyanın medyanını çıkarın; son olarak, elde edilen üç Değerde, nihai sonucu elde etmek için ara değeri çıkarın. Tüm hesaplama 3 clk tüketir ve bunu gerçekleştirmek için kabarcık yöntemine ihtiyaç duymaz, bu da zamandan tasarruf sağlar.

Ön taraftaki VIP_Matrix_Generate_3X3_8Bit modülünün tasarımı sayesinde, çok çaba sarf ettikten sonra nihayet hayallerimizdeki 3 * 3 piksel dizisini elde ettik, her piksel 8Bit derinliğinde. Bu aşamada ortalama filtreleme algoritmasını tasarlamaya ve uygulamaya başlayın.

(1) İlk olarak, her satırdaki 3 pikseli ayrı ayrı sıralayın.Verilog HDL uygulamasında paralel özellik nedeniyle sadece bir saate ihtiyacımız var. Uygulama aşağıdaki gibidir:

modül Sort3

(

giriş clk,

girdi rst_n,

giriş verisi1, veri2, veri3,

çıktı reg max_data, mid_data, min_data

);

// -----------------------------------

// 3 veriyi sırala

her zaman @ (posedge clk veya negedge rst_n)

başla

eğer (! rst_n)

başla

max_data < = 0;

veri ortası < = 0;

min_data < = 0;

son

Başka

başla

// maksimum değeri al

eğer (veri1 > = veri2 veri1 > = veri3)

max_data < = veri1;

else if (veri2 > = veri1 veri2 > = veri3)

max_data < = veri2;

else // (veri3 > = veri1 veri3 > = veri2)

max_data < = veri3;

// orta değeri al

eğer ((veri1 > = veri2 veri1 < = veri3) || (veri1 > = veri3 veri1 < = veri2))

veri ortası < = veri1;

else if ((veri2 > = veri1 veri2 < = veri3) || (veri2 > = veri3 veri2 < = veri1))

veri ortası < = veri2;

else // ((veri3 > = veri1 veri3 < = veri2) || (veri3 > = veri2 veri3 < = veri1))

veri ortası < = veri3;

// minimum değeri belirle

eğer (veri1 < = veri2 veri1 < = veri3)

min_data < = veri1;

else if (veri2 < = veri1 veri2 < = veri3)

min_data < = veri2;

else // (veri3 < = veri1 veri3 < = veri2)

min_data < = veri3;

son

son

Yukarıdaki devre, hesaplamanın ilk adımını uygular, yeni bir Median_Filter_3X3.v oluşturur ve aşağıdaki gibi Sort3'ü başlatır:

//Aşama 1

tel max_data1, mid_data1, min_data1;

Sırala3 u_Sort3_1

(

.clk (clk),

.rst_n (rst_n),

.data1 (veri11),

.data2 (veri12),

.data3 (veri13),

.max_data (max_data1),

.mid_data (mid_data1),

.min_data (min_data1)

);

(2) Daha sonra, üç piksel sırasının sıralaması işlenir, yani, üç maksimumun minimum, üç minimumun maksimum ve üç ara değerin orta değeri çıkarılır. Burada, aşağıda gösterildiği gibi Sort3 modülünü doğrudan başlatabilirsiniz:

//Adım 2

wire max_min_data, mid_mid_data, min_max_data;

Sırala3 u_Sort3_4

(

.clk (clk),

.rst_n (rst_n),

.data1 (max_data1),

.data2 (max_data2),

.data3 (max_data3),

.max_data,

.mid_data,

.min_data (max_min_data)

);

Sırala3 u_Sort3_5

(

.clk (clk),

.rst_n (rst_n),

.data1 (mid_data1),

.data2 (mid_data2),

.data3 (mid_data3),

.max_data,

.mid_data (mid_mid_data),

.min_data

);

Sırala3 u_Sort3_6

(

.clk (clk),

.rst_n (rst_n),

.data1 (min_data1),

.data2 (min_data2),

.data3 (min_data3),

.max_data (min_max_data),

.mid_data,

.min_data

);

(3) Son olarak, aşağıdaki gibi son 9 pikselin medyanını bulmak için (2) 'de elde edilen üç değerin medyanını tekrar alın:

//Aşama 3

Sırala3 u_Sort3_7

(

.clk (clk),

.rst_n (rst_n),

.data1 (max_min_data),

.data2 (mid_mid_data),

.data3 (min_max_data),

.max_data,

.mid_data (target_data),

.min_data

);

Tamam, (1) - (3) 'ten itibaren, 3 * 3 piksel dizisinin medyan çıkarımını tamamlamak için 3 saat harcadık. Bu üç adımın RTL diyagramı aşağıdaki gibidir: 9 piksel girin, hedef medyan pikseli çıkarın:

Son olarak, VIP_Gray_Median_Filter.v'deki medyan ayıklama şu şekilde somutlaştırılır:

// 3X3 verilerin Medyan Filtresi, 3 saate ihtiyaç duyar

tel orta_değer;

Median_Filter_3X3 u_Median_Filter_3X3

(

.clk (clk),

.rst_n (rst_n),

// SATIR1

.data11 (matrix_p11),

.data12 (matrix_p12),

.data13 (matrix_p13),

// ROW2

.data21 (matrix_p21),

.data22 (matrix_p22),

.data23 (matrix_p23),

// ROW3

.data31 (matrix_p31),

.data32 (matrix_p32),

.data33 (matrix_p33),

.target_data (mid_value)

);

3 saat kullanıldığından, çizgi ve alan ve piksel etkinleştirmesinin de senkronizasyonu sürdürmek için 3 saati buna göre hareket ettirmesi gerekir.Bu, aşağıdaki gibi çok önemlidir:

// ------------------------------------------

// 3 saat sinyal senkronizasyonu

reg per_frame_vsync_r;

reg per_frame_href_r;

her zaman @ (posedge clk veya negedge rst_n)

başla

eğer (! rst_n)

başla

per_frame_vsync_r < = 0;

per_frame_href_r < = 0;

son

Başka

başla

per_frame_vsync_r < = {per_frame_vsync_r, matrix_frame_vsync};

per_frame_href_r < = {per_frame_href_r, matrix_frame_href};

son

son

atama post_frame_vsync = per_frame_vsync_r;

atamak post_frame_href = per_frame_href_r;

atama post_img_Gray = post_frame_href? mid_value: 8'd0;

Son olarak, aşağıdaki şekilde gösterildiği gibi, medyan filtrelemenin Modelsim simülasyon diyagramı verilmiştir (yeni mimaride * _clken yoktur):

Daha önce yapılan 3 * 3 temelinde, bir medyan filtresi uygulamak çok kolaydır, elbette, öncül bu tasarım içeriklerine hakim olmanızdır. VIP_Gray_Median_Filter'ı VIP_Image_Processor'da aşağıdaki gibi örnekleyin:

// --------------------------------------

// Daha iyi görüntü kalitesi için Gri Görüntü medyan filtresi.

wire post3_frame_vsync; // İşlenmiş Görüntü verileri vsync geçerli sinyal

wire post3_frame_href; // İşlenmiş Görüntü verileri href vaild sinyali

wire post3_img_Gray; // İşlenmiş Görüntü Gri çıktısı

VIP_Gray_Median_Filter

# (

.IMG_HDISP (IMG_HDISP), // 640 * 480

.IMG_VDISP (IMG_VDISP)

)

u_VIP_Gray_Median_Filter

(

// küresel saat

.clk (clk), // cmos video piksel saati

.rst_n (rst_n), // genel sıfırlama

// İşlenmek üzere hazırlanmış görüntü verileri

.per_frame_vsync (post2_frame_vsync), // Hazırlanan Görüntü verileri vsync geçerli sinyal

.per_frame_href (post2_frame_href), // Hazırlanan Görüntü verileri href vaild sinyali

.per_img_Gray (post2_img_Gray), // Hazırlanmış Görüntü parlaklığı girişi

// Görüntü verileri işlendi

.post_frame_vsync (post3_frame_vsync), // İşlenmiş Görüntü verileri vsync geçerli sinyal

.post_frame_href (post3_frame_href), // İşlenmiş Görüntü verileri href vaild sinyali

.post_img_Gray (post3_img_Gray) // İşlenmiş Görüntü parlaklığı çıktısı

);

başka

post3_frame_vsync = post2_frame_vsync atayın;

post3_frame_href = post2_frame_href atayın;

atama post3_img_Gray = post2_img_Gray;

Son olarak, jic dosyasını tam olarak derleyin, oluşturun ve indirin ve işlenmiş videoyu VGA veya PC ana bilgisayarında aşağıda gösterildiği gibi izleyin:

Yukarıdaki resmin solu orijinal gri tonlamalı görüntüdür ve yukarıdaki resmin sağ tarafı medyan filtrelemeden sonraki görüntüdür.Maksimum değer düşürüldüğü için medyan filtrelemeden sonra görüntünün nispeten daha koyu olduğu görülebilir. Ancak ortalama filtreleme ile karşılaştırıldığında, medyan filtreleme, gürültüyü filtreleyerek ayrıntıları etkili bir şekilde korur.

Ek olarak, bu arada, ortalama filtreleme ile medyan filtrelemenin etkisi arasındaki farktan bahsedelim, işte aşağıda gösterildiği gibi bir karşılaştırma:

Yukarıdaki şeklin sol görüntüsü, ortalama filtrelenmiş görüntüdür ve yukarıdaki görüntünün sağ görüntüsü, medyan filtrelenmiş görüntüdür. Şeklin analizinden, ortalama filtreden sonraki görüntünün bulanıklaştığı ve medyan filtre tarafından işlenen görüntüye kıyasla ayrıntıların kaybolduğu görülebilir. Tuz ve biber gürültüsünün işlenmesi için, medyan filtrelemenin avantajı, ortalama filtrelemeden daha büyüktür.

Daha önce de belirtildiği gibi, görüntü işlemede birçok filtreleme algoritması vardır, ancak bunlar birbirlerinden ayrılamazlar.En temel görüntü işleme ve transplantasyon ve uygulama sorunu olan daha şablon algoritma işleme yöntemlerinde ustalaşmışlardır. Bingo burada, okuyucuların kendi başlarına çalışıp uygulamalarını bekleyen en temel medyan filtre algoritmasının FPGA uygulamasını, daha tipik, hedeflenmiş ve daha NB filtre algoritmasını tanıtıyor!

VIP görüntü işleme dünyayı daha heyecanlı kılar!

Ciddiyetle beyan edin: Sadece bu bölümde% 100 ustalaştığınızda, Bingo VIP algoritması uygulamasının özünü anlayabilir ve aşağı bakmaya devam etme anlamını elde edebilirsiniz! ! !

Bir koltukta sadece üç kişi var ve Wuhan Metrosu ilgilenilmesi gereken konuları açıklıyor
önceki
Negatif geri besleme teorisine dayalı sinyal koşullandırma devresinin tasarımı
Sonraki
`` AET kapsamlı sonlandırma '' Qualcomm, 5nm işlemli üçüncü nesil 5G temel bant Snapdragon X60'ı piyasaya sürdü ve 2021'in başlarında satışa sunulacak
3 * 3 piksel "blog gönderisi" dizisinin HDL uygulaması
SSAS uzak voltaj kompanzasyonunun bağlantı durumunu tespit etmek için basit bir yöntem
"Dreamwork" Xiaomi Mi 10 Pro gerçek deneyimi: kamera oyunu kullanışlıdır, üst düzey piyasayı sabit tutar
Audi'nin üst yönetiminde bir personel değişikliğine toplam 5 kişi katıldı
Midea'nın Wuhan fabrikasının yeniden başlama oranı% 90 | Atlas
Wuhan Metrosu yakında faaliyetlerine devam edecek ve istasyon arka arkaya 5 gün boyunca tamamen yok edilecek.
Xi Jinping bu özel zirveye katıldı ve "salgın" Çin stratejisine karşı küresel bir savaş teklif etti.
Pacific Securitiesin ana hissedarı Jiayu Investment, 2.321.700 hisseyi artırma taahhüdünü tamamlamadığı için eleştirildi
Gömülü sisteme dayalı elektrik gücü kablosuz özel ağ için uzaktan iletişim terminalinin geliştirilmesi
GDDR6'nın avantajlarını grafik hesaplamadan yüksek performanslı ağ uygulamalarına kadar genişletin
MIPI D-PHY fiziksel katman otomatik uygunluk testi
To Top