教您使用FPGA來畫鉛筆畫

  • 2019 年 10 月 29 日
  • 筆記

教您使用FPGA來畫鉛筆畫

作者:lee神

1 概要

灰度級(8bit 0到255 )代表從黑到白,中間的介於黑白之間。對比度比較明顯的灰度級分布比較均勻,二值影像是灰度影像的特例。

本節沒有多大的知識難度,主要在於灰度的閾值調節來形成二值灰度影像,經過此節我們也可以使用FPGA閾值調節來繪出油筆畫或者鋼筆畫。

本節主要以示例影像為主供大家欣賞。

2 FPGA實現

圖1 實現鉛筆畫FPGA模組框圖

圖1中,我們輸入的是彩色影像(RGB格式),經過串口傳圖進入FPGA,通過Ycbcr模組後變成Ycbcr格式影像,其中「Y」表示明亮度(Luminance或Luma),也就是灰階值。

最後進行閾值比較後輸出二值影像(Binary image)或者更多值影像。

FPGA源碼:

//————————————————

// THRESHOLD

//————————————————

parameter THRESHOLD = 8'd 100;

//————————————————

//Gray image threshold processing

//———————————————–

always @(posedge TFT_clk or negedge Rst_n) begin

if(!Rst_n)

gray <= 8'h00;

else if(gray_en)

if(o_y_8b > THRESHOLD)

gray <= 8'hff;

else

gray <= 8'h00;

else

;

end

assign TFT_de = gray_en;

assign TFT_rgb = {gray[7:3],gray[7:2],gray[7:3]}; //Y

程式碼解釋:

根據灰度閾值的大小不同我們將影像大於閾值的部分變成白色,小於的部分變成黑色。

結果展示:

圖2 RGB影像原圖

圖3 lena二值畫

圖4 car原圖

圖5 閾值處理後的car

結果分析:

由於手機拍照的技術不好導致不能實際顯示。對於影像過黑我們可以增加輸出的灰度值使它更加接近鉛筆顏色。對於背景過度明亮我們可以降低輸出的背景量度,已達到效果最好。

如果需要得到效果更佳的鉛筆畫我們可以採用多閾值多個不同顏色輸出處理。

推薦閱讀

FPGA影像處理之rgbtogray演算法的實現