国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FPGA圖像處理-灰度化

這篇具有很好參考價值的文章主要介紹了FPGA圖像處理-灰度化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

簡介

verilog實現(xiàn)彩色圖像的灰度化算法,并進(jìn)行Modelsim仿真。
圖像處理操作中最簡單的一類就是點操作,一個像素的輸出只取決于輸入圖像的相應(yīng)像素值。
RGB轉(zhuǎn)GRAY公式:
GRAY = 0.299R + 0.587G + 0.114B
由于FPGA不方便小數(shù)運算,所以放大256倍進(jìn)行運算,然后右移8位:
GRAY = (77R + 150G + 29B) >> 8
彩色圖像的灰度化屬于點操作,但兩級寄存器之間組合邏輯過多會導(dǎo)致時序出問題,所以對該公式進(jìn)行流水線處理,分為三級流水線:

  • 第一級處理乘法
  • 第二級處理加法
  • 第三級處理移位

模塊說明

module rgb2gray(
    input clk,
    input rst_n,
    
    // input data & valid
    input iValid,
    input [7:0] red,
    input [7:0] green,
    input [7:0] blue,

    // output data & valid
    output oValid,
    output [7:0] gray
);

為了簡單起見,輸入輸出都是valid+data的形式

第一級流水線:乘法

// 第一級乘法寄存器
reg [15:0] red_r;
reg [15:0] green_r;
reg [15:0] blue_r;

always @(posedge clk, negedge rst_n) begin
    if(!rst_n) begin
        red_r   <= 0;
        green_r <= 0;
        blue_r  <= 0;
    end else begin
        red_r   <= red * 8'd77;
        green_r <= green * 8'd150;
        blue_r  <= blue * 8'd29;
    end
end

第二級流水線:加法

// 第二級加法寄存器
reg [15:0] gray_r1;

always @(posedge clk, negedge rst_n) begin
    if(!rst_n)
        gray_r1 <= 0;
    else
        gray_r1 <= red_r + green_r + blue_r;
end

第三級流水線:移位

// 第三級移位寄存器
reg [7:0] gray_r2;

always @(posedge clk, negedge rst_n) begin
    if(!rst_n)
        gray_r2 <= 0;
    else
        gray_r2 <= gray_r1[15:8];
end

assign gray = gray_r2;

valid延遲輸出

因為流水線消耗了3個時鐘周期,所以輸出valid相較于輸入valid要延遲3

// valid打三拍
reg [2:0] valid_shift;

always @(posedge clk, negedge rst_n) begin
    if(!rst_n)
        valid_shift <= 0;
    else
        valid_shift <= {valid_shift[1:0], iValid};
end

assign oValid = valid_shift[2];

Modelsim仿真

寫個testbench模擬50個像素輸入:

`timescale 1ns/1ns
module rgb2gray_tb;
    reg clk = 1'b1;
    always #10 clk = ~clk;
    reg rst_n = 1'b0;

    reg         iValid = 1'b0;
    reg [7:0]   red    = 8'd0;
    reg [7:0]   green  = 8'd0;
    reg [7:0]   blue   = 8'd0;

    // 用于對比
    wire [7:0] gray_ref = red * 0.299 + green * 0.587 + blue * 0.114;

    wire            oValid;
    wire    [7:0]   gray;

    initial begin
        #20 rst_n <= 1'b1;
        // 仿真50個像素
        repeat(50) begin
            #20;
            iValid <= 1'b1;
            red    <= $random;
            green  <= $random;
            blue   <= $random;
        end
        #100 $stop;
    end

    rgb2gray inst_rgb2gray(
        .clk    (clk),
        .rst_n  (rst_n),
        .iValid (iValid),
        .red    (red),
        .green  (green),
        .blue   (blue),
        .oValid (oValid),
        .gray   (gray)
    );
endmodule

波形圖如下:
FPGA圖像處理-灰度化
圖中gray_ref是參考答案,可以看出,graygray_ref慢三個時鐘周期,因為模塊內(nèi)部有三級流水線。
輸出與參考答案偶爾有誤差,那是因為FPGA中沒有進(jìn)行浮點數(shù)運算,將小數(shù)放大了256倍,然后取整用于運算,最后再縮小256倍,肯定是有誤差的,不過影響不大,可以忽略。文章來源地址http://www.zghlxwxcb.cn/news/detail-469383.html

到了這里,關(guān)于FPGA圖像處理-灰度化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 圖像處理(1):用Python實現(xiàn)彩色圖像轉(zhuǎn)為灰度圖像的兩種方法以及批量將圖片轉(zhuǎn)為灰度圖

    圖像處理(1):用Python實現(xiàn)彩色圖像轉(zhuǎn)為灰度圖像的兩種方法以及批量將圖片轉(zhuǎn)為灰度圖

    用Python實現(xiàn)彩色圖像轉(zhuǎn)為灰度圖像的兩種方法介紹 這篇文章給大家主要介紹使用 Python 將彩色圖像轉(zhuǎn)為灰度圖像的兩種方法,以及用 Python 批量將圖片轉(zhuǎn)為灰度圖的方法,供大家參考: 使用Python中的cv2庫,它自帶彩色轉(zhuǎn)灰度的方法,并且代碼非常簡單。 先讀取一張彩色圖片,然

    2024年02月11日
    瀏覽(28)
  • 圖像處理之圖像灰度化

    圖像處理之圖像灰度化

    圖像灰度化 彩色圖像中的每個像素的顏色有R、G、B三個分量決定,而每個分量有255中值可取,這樣一個像素點可以有1600多萬 (255 255 255)的顏色的變化范用。而灰度圖像是R、G、B三個分量相同的一種特殊的彩色圖像(R=G=B),其一個像素點的變化范圍為255種,所以在數(shù)字圖像處理

    2024年02月15日
    瀏覽(26)
  • OpenCV圖像處理-灰度處理

    OpenCV圖像處理-灰度處理

    灰度的線性變換將圖像中的所有像素點的值按 線性變換函數(shù) 進(jìn)行變換。 在曝光不足或過度的情況下,圖像的灰度值會局限在一個很小的范圍內(nèi),這時在顯示器上看到的將是一個模糊不清、似乎沒有層次的圖像。 針對這一情況,使用一個線性單值函數(shù)對圖像內(nèi)的每一個像素做

    2024年02月08日
    瀏覽(46)
  • 計算機視覺學(xué)習(xí)筆記(圖像的灰度與灰度級 圖像的深度 圖像噪聲 圖像處理)

    如果把白色和黑色之間按對數(shù)關(guān)系分為若干等級,稱為灰度,灰度分為256階,0為黑色,灰度就是沒有色彩,RGB色彩分量全部相等(150,150,150)就代表灰度為150. 一幅圖像中不同位置的亮度是不一樣的,可用f(x,y)來表示(x,y)上的亮度。由于光是一種能量形式,因此亮度是非負(fù)

    2024年02月01日
    瀏覽(96)
  • opencv 圖像基礎(chǔ)處理_灰度圖像

    opencv 圖像基礎(chǔ)處理_灰度圖像

    二值圖像表示起來簡單方便,但是因為其僅有黑白兩種顏色,所表示的圖像不夠細(xì)膩。如果想要表現(xiàn)更多的細(xì)節(jié),就需要使用更多的顏色。例如,圖 2-3 中的 lena 圖像是一幅灰度圖像, 它采用了更多的數(shù)值以體現(xiàn)不同的顏色,因此該圖像的細(xì)節(jié)信息更豐富。 通常,計算機會將

    2024年02月15日
    瀏覽(36)
  • 圖像處理(二值圖、灰度圖、彩色圖像)

    圖像處理(二值圖、灰度圖、彩色圖像)

    圖像處理之二值圖像、灰度圖像、RGB圖像 1、二值圖像 定義:二值圖像是值僅僅包含黑色和白色的圖像 計算機在處理時,會把黑色像素點處理為0,白色像素點處理1。由于只用一個比特位就能表示,所以稱之為二值圖像。 2、灰度圖 為了表達(dá)更豐富的顏色細(xì)節(jié),灰度圖采用更

    2024年02月06日
    瀏覽(28)
  • 圖像預(yù)處理算法————灰度化處理

    圖像預(yù)處理算法————灰度化處理

    圖像預(yù)處理算法適合在FPGA上完成,原理簡單且需要快速處理,通常有灰度化、中值、均值濾波等,以及顏色空間轉(zhuǎn)換算法。 灰度圖像是一種特殊的彩色圖像(R=G=B的彩色圖像) 只有一種顏色分量,單通道的0-255 方法:一般有分量法、最大值法、平均值法、加權(quán)平均法四種方

    2024年01月17日
    瀏覽(25)
  • matlab數(shù)字圖像處理——圖像的讀寫,灰度、二值圖像

    matlab數(shù)字圖像處理——圖像的讀寫,灰度、二值圖像

    一、實驗?zāi)康?1.結(jié)合數(shù)字圖像處理的知識,直觀感受圖像處理的基本實現(xiàn)過程 2.熟悉MATLAB工具的使用 3.了解圖像的讀寫和顯示 二、實驗內(nèi)容 實驗內(nèi)容一:圖像讀取 (1)利用編程實現(xiàn)讀取圖像 利用imread讀取文件夾images中的圖像;查看讀取到的圖像數(shù)據(jù)矩陣,對比灰度圖像、

    2024年02月07日
    瀏覽(22)
  • Opencv 圖像處理:圖像基礎(chǔ)操作與灰度轉(zhuǎn)化

    Opencv 圖像處理:圖像基礎(chǔ)操作與灰度轉(zhuǎn)化

    本文已收錄于Opencv系列專欄: 深入淺出OpenCV ,專欄旨在詳解Python版本的Opencv,為計算機視覺的開發(fā)與研究打下堅實基礎(chǔ)。免費訂閱,持續(xù)更新。 1.圖像格式 圖像壓縮比: 通過編碼器壓縮后的圖象數(shù)字大小和原圖象數(shù)字大小的壓縮比。 BMP 格式 Windows系統(tǒng)下的 標(biāo)準(zhǔn)位圖格式 ,

    2024年02月04日
    瀏覽(31)
  • python 圖像處理之圖像灰度化 cvtColor

    python 圖像處理之圖像灰度化 cvtColor

    預(yù)備知識 圖像灰度化是將一幅彩色圖像轉(zhuǎn)換為灰度化圖像的過程。 彩色圖像的色彩通常由R、G、B三個分量組合而成(其實就是3個二維數(shù)組疊加而成),從而搭配出各種顏色 灰度圖像中每個像素僅具有一種樣本顏色,其灰度是位于黑色與白色之間的多級色彩深度,灰度值大的像素

    2024年02月03日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包