国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于彩色MT9V034攝像頭 Bayer轉RGB FPGA實現

FPGA之家 ? 來源:宏強子 ? 作者:宏強子 ? 2021-06-12 17:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 圖像bayer格式介紹

bayer格式是伊士曼·柯達公司科學家Bryce Bayer發明的,Bryce Bayer所發明的拜耳陣列被廣泛運用數字圖像。Bayer格式是相機內部的原始數據, 一般后綴名為.raw。

對于彩色圖像,一般是三原色數據,rgb格式。但是攝像頭一個像素點只有rgb中一種數據(下圖為bayer色彩濾波陣列)。但是有很多攝像頭直接輸出rgb和yuv格式,如ov5640、ov7725等等,這是因為在Sensor模組的內部會有一個ISP模塊,會將 Sensor采集到的數據進行插值和特效處理,所以直接輸出彩色圖像但也有攝像頭沒有ISP模塊,直接輸出Bayer數據,這就需要自己寫Bayer轉rgb算法

2 MT9V034簡單介紹

做圖像處理的朋友都知道,MT9V034是一款十分出色的做機器視覺的攝像頭,一般都是灰度的。但是也有彩色款,當時我覺得灰度的效果那么好,一時頭熱就買一個彩色款的。mt9v034用起來很方便,可以不用寄存器配置,上電默認752*480分辨率。當然也可以iic配置。

3 MT9V034 datasheet 簡單解析

1) 有效圖像 752x480;

最大時鐘為27Mhz;

最大幀率為60fps;

10位的adc(我的是八位的輸出,店家只將高8位引出,有點影響最后圖像的精度);

2)這是mt9v034Bayer陣列,注意輸出方向,從左到右,從上到下;

3)攝像頭ID號要需要查看攝像頭模塊PCB上的S_CTRL_ADR1和S_CTRL_ADR0引腳怎么連接的;

4)很明顯S_CTRL_ADR1, S_CTRL_ADR0是被拉低了,所以攝像頭ID為0x90.上面說到攝像頭只有高8位被引出,在這里可以證實了;

5)下面是大部分寄存器,mt9v034可配置的寄存器很少。0x00是芯片版本。03、04是攝像頭分辨率

6)datasheet就介紹到這里,更多信息需要自己去閱讀。

4 Bayer轉rgb算法解析

我是用shift_register IP緩存兩行數據,形成2*2窗口(這是FPGA做圖像算法最常用的方法和IP),不會的朋友可以搜一搜,有很多博客可以學習,一定要自己仿真一下,搞明白,這原理有點難理解。

根據窗口移動,不難發現,總結出一條重要的規律:總共只有四種窗口,而且與行和列的奇偶有關。

假設計數器從零開始記數:

1)第一種{行偶,列偶}

2)第二種{行偶,列奇}

3)第三種{行奇,列偶}

4)第四種{行奇,列奇}

5 算法實現

首先說明我是用Xilinx的ZYNQ FPGA,(Altera的也有類似的IP)。我直接說明一下IP的參數設置,其他的像怎么添加IP什么的我就不講了,不會的自己網上學習。

1)這是IP首頁,藍框自定義IP名,修改一下紅框的參數,我們是8位數據,一行數據為640個。Clock enable端與sclr端可以根據自己的要求決定勾不勾選。其他默認就行,點擊ok可以了。

2)Vivado也提供端口例化模板,如下圖操作就行;

a97d14c6-c55a-11eb-9e57-12bb97331649.png

3)verilog源碼

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company:

// Engineer: 宏強子

//

// Create Date: 2019/02/04 1056

// Design Name: colour MT98V034 bayer2rgb

// Module Name: MT_bayer2rgb

// Project Name: Colour_MT_bayer2rgb

// Target Devices: ZYNQ7020

// Tool Versions: vivado2018.3

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//////////////////////////////////////////////////////////////////////////////////

module MT_bayer2rgb(

//system singal

input s_rst_n ,

//cmos simgals

input vsync_i ,

input hsync_i ,

input pclk ,

input [7:0] bayer_data ,

//輸出

output vsync_o ,

output hsync_o ,

output [23:0] rgb_data

);

//========================================================================

// =========== Define Parameter and Internal signals ===========

//========================================================================/

reg [9:0] col_cnt ;

reg [8:0] row_cnt ;

reg hsync_i_1 ;

reg hsync_i_2 ;

reg vsync_i_1 ;

reg vsync_i_2 ;

wire [7:0] line_1 ;

wire [7:0] line_2 ;

reg [2:0] data_control ;

reg [7:0] line1_1 ;

reg [7:0] line1_2 ;

reg [7:0] line2_1 ;

reg [7:0] line2_2 ;

reg [7:0] rgb_r ;

reg [8:0] rgb_g ;

reg [7:0] rgb_b ;

//=============================================================================

//**************************** Main Code *******************************

//=============================================================================

//列計數

always @ (posedge pclk or negedge s_rst_n) begin

if(s_rst_n == 1‘b0)

col_cnt 《= 10’d0;

else if (hsync_i == 1‘b1)

col_cnt 《= col_cnt + 1’b1;

else

col_cnt 《= 10‘d0;

end

always @ (posedge pclk) begin

hsync_i_1 《= hsync_i;

hsync_i_2 《= hsync_i_1;

end

always @ (posedge pclk) begin

vsync_i_1 《= vsync_i;

vsync_i_2 《= vsync_i_1;

end

//行計數

always @ (posedge pclk or negedge s_rst_n) begin

if(s_rst_n == 1’b0)

row_cnt 《= 9‘d0;

else if(~hsync_i && hsync_i_1)

row_cnt 《= row_cnt + 1’b1;

else if (row_cnt 》= 9‘d481)

row_cnt 《= 9’d0;

end

//data_control

always @ (posedge pclk or negedge s_rst_n) begin

if(s_rst_n == 1‘b0)

data_control 《= 3’b100;

else if (hsync_i_1 == 1‘b1 && hsync_i == 1’b1)

data_control 《= {1‘b0,row_cnt[0],~col_cnt[0]};

else

data_control 《= 3’b100;

end

shift_ram shift_ram_1 (

.D (bayer_data ), // input wire [7 : 0] D

.CLK (pclk ), // input wire CLK

.CE (hsync_i ), // input wire CE

.SCLR (~s_rst_n ), // input wire SCLR

.Q (line_1 ) // output wire [7 : 0] Q

);

shift_ram shift_ram_2 (

.D (line_1 ), // input wire [7 : 0] D

.CLK (pclk ), // input wire CLK

.CE (hsync_i ), // input wire CE

.SCLR (~s_rst_n ), // input wire SCLR

.Q (line_2 ) // output wire [7 : 0] Q

);

always @ (posedge pclk or negedge s_rst_n) begin

if(s_rst_n == 1‘b0) begin

line1_1 《= 8’d0;

line1_2 《= 8‘d0;

line2_1 《= 8’d0;

line2_2 《= 8‘d0;

end

else begin

line1_1 《= line_1;

line1_2 《= line1_1;

line2_1 《= line_2;

line2_2 《= line2_1;

end

end

always @ (data_control) begin

case(data_control)

3’b000 : begin

rgb_r = line1_1 + 8‘d5;

rgb_g = line2_1 + line1_2 + 8’d10;

rgb_b = line2_2 + 8‘d5;

end

3’b001 : begin

rgb_r = line1_2 + 8‘d5;

rgb_g = line1_1 + line2_2 + 8’d10;

rgb_b = line2_1 + 8‘d5;

end

3’b010 : begin

rgb_r = line2_1 + 8‘d5;

rgb_g = line1_1 + line2_2 + 8’d10;

rgb_b = line1_2 + 8‘d5;

end

3’b011 : begin

rgb_r = line2_2 + 8‘d5;

rgb_g = line2_1 + line1_2 + 8’d10;

rgb_b = line1_1 + 8‘d5;

end

default: begin

rgb_r = 8’d0;

rgb_g = 9‘d0;

rgb_b = 8’d0;

end

endcase

end

assign rgb_data = {rgb_r,rgb_g[8:1],rgb_b};

assign vsync_o = vsync_i_2;

assign hsync_o = hsync_i_2;

endmodule

6 總結

最后說明一下,最后分辨率改為640*480,但是發現480指的是0~480,所以行計數器在481清零。由于我使用的是ZYNQ,所以直接使用PS端的IIC接口配置攝像頭。如果用默認的分辨率就需要修改一下IP的深度和行計數器的清零的數值就行了。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5608

    瀏覽量

    130001
  • 計數器
    +關注

    關注

    32

    文章

    2316

    瀏覽量

    98192
  • IIC
    IIC
    +關注

    關注

    11

    文章

    309

    瀏覽量

    40638

原文標題:彩色MT9V034攝像頭 Bayer轉RGB FPGA實現

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【正點原子STM32N647開發板試用】--MCMX335攝像頭實驗

    之前體驗的RGB屏幕的功能,這回為了體驗一下攝像頭的功能,特意去TB買了原子配套的MCIMX335攝像頭,該攝像頭采用的是MIPI接口。 電路圖上是接口電路,器件號是J2,如下圖 不
    發表于 02-21 17:45

    ESP32-S3在初始化攝像頭時檢測到攝像頭模組型號不被支持

    (WROOM-32)不同,接錯引腳會直接導致探測失敗!以下是OV2640/OV5640與ESP32-S3的標準接線表(兼容大部分開發板): 攝像頭引腳 ESP32-S3引腳 功能說明 VCC 3.3V 供電(必須
    發表于 02-11 06:38

    【正點原子STM32N647開發板試用】--攝像頭屏顯

    本篇講述實現攝像頭畫面LCD屏幕顯示,即顯示屏與攝像頭功能整合在一起。 一.硬件原理與準備 1.LCD觸摸顯示屏 開發板配備有一塊4.3寸RGB LCD觸摸(電容)顯示屏,分辨率480
    發表于 01-25 14:51

    自動駕駛既然有雙目攝像頭了,為什么還要三目攝像頭

    [首發于智駕最前沿微信公眾號]在自動駕駛領域,純視覺方案一直受到不少人的認可。雙目攝像頭由于模擬了人眼的工作方式,能夠通過視差計算還原三維信息,在距離判斷和空間感知上具有天然優勢,因此被廣泛應用于純
    的頭像 發表于 12-09 08:59 ?977次閱讀
    自動駕駛既然有雙目<b class='flag-5'>攝像頭</b>了,為什么還要三目<b class='flag-5'>攝像頭</b>?

    3.7V升12V0.5A攝像頭供電芯片H6392

    ,保障拍攝過程中電源輸出無波動。 芯片內置18V/0.2Ω 功率 MOSFET,其 PWM 控制電路可提升電源系統效率,滿足攝像頭工作時的功耗優化需求;內部補償網絡能優化外部最多 9 個組件,有效精簡
    發表于 11-13 16:02

    車載雙目攝像頭如何“看見”世界?

    [首發于智駕最前沿微信公眾號]想要讓車輛知道前方有什么、距離多遠、是否可以靠近,首先要做的是讓其“看”清楚環境。在眾多車載感知硬件中,與人類看到世界最類似的一個感知硬件便是車載雙目攝像頭了。 圖片
    的頭像 發表于 11-13 09:17 ?1423次閱讀
    車載雙目<b class='flag-5'>攝像頭</b>如何“看見”世界?

    Texas Instruments TPS650332-Q1汽車攝像頭PMIC特性及應用電路

    Texas Instruments TPS650332-Q1汽車攝像頭電源管理IC(PMIC)包含一個低壓差(LDO)穩壓器和三個降壓轉換器。降壓1降壓轉換器的輸入電壓范圍高達18.3 V,用于
    的頭像 發表于 08-06 09:20 ?1161次閱讀
    Texas Instruments TPS650332-Q1汽車<b class='flag-5'>攝像頭</b>PMIC特性及應用電路

    創世SD NAND貼片卡:智能攝像頭存儲難題的完美解決方案 #人工智能 #智能攝像頭 #攝像頭

    攝像頭
    深圳市雷龍發展有限公司
    發布于 :2025年08月05日 11:17:13

    紅外攝像頭模組是什么?科技時代的眼睛

    在現代科技迅速發展的背景下,紅外攝像頭模組逐漸成為各類智能設備中的重要組成部分。無論是在安防監控、智能家居還是汽車領域,紅外攝像頭模組以其獨特的功能和優越的性能,正在改變我們的生活方式。本文將
    的頭像 發表于 07-31 10:07 ?1062次閱讀
    紅外<b class='flag-5'>攝像頭</b>模組是什么?科技時代的眼睛

    【Milk-V Duo S 開發板免費體驗】4 - OV5647 攝像頭攝像頭測試

    引言 以前使用Milk-V Duo的時候,覺得它的攝像頭支持比較弱,只能支持特定型號的攝像頭,還不好買。我有個學生甚至因為這個原因退出了集創賽。這次特意測試了一下它的攝像頭。 DuoS
    發表于 07-08 21:26

    廬山派K230可以直接使用usb攝像頭嗎,可以的話攝像頭有啥要求嗎?

    廬山派K230可以直接使用usb攝像頭嗎,可以的話攝像頭有啥要求嗎
    發表于 06-24 07:07

    K230micropython下能實現同時用USB攝像頭和板載攝像頭YOLO識別并顯示在IDE上嗎?

    K230micropython下能實現同時用USB攝像頭和板載攝像頭YOLO識別并顯示在IDE上嗎?以及如何提高USB進行YOLO識別的幀數?
    發表于 06-20 06:35

    基于RV1126開發板實現多路網絡攝像頭取流方案

    在RV1126上實現多路網絡攝像頭取流方案
    的頭像 發表于 04-21 14:39 ?49次閱讀
    基于RV1126開發板<b class='flag-5'>實現</b>多路網絡<b class='flag-5'>攝像頭</b>取流方案

    基于RV1126開發板實現多路網絡攝像頭取流方案

    在RV1126上實現多路網絡攝像頭取流方案
    的頭像 發表于 04-11 15:57 ?1254次閱讀
    基于RV1126開發板<b class='flag-5'>實現</b>多路網絡<b class='flag-5'>攝像頭</b>取流方案

    社區安裝IPC攝像頭,跟安裝一般安防監控攝像頭有什么區別?

    為了保護社區或其他公共場所的安全,往往需要安裝監控攝像頭。但隨著越來越多的公共安全事件發生,傳統只單純拍攝和記錄畫面的監控攝像頭已不能滿足社區安防的需求,需要更多功能的安防監控攝像頭來進行更智能化
    的頭像 發表于 04-03 10:00 ?2317次閱讀
    社區安裝IPC<b class='flag-5'>攝像頭</b>,跟安裝一般安防監控<b class='flag-5'>攝像頭</b>有什么區別?