首页->【FPGA摄像头图像开发联盟】

1292 2

详见07_ HDL_VIP_Examples下“05_USB_OV7725_YCbCr2Gray_Demo”工程。

 

严格的讲,这一届并非属于HDL-VIP的内容。不过这一节作为后续均值滤波、中值滤波等算法的视频源基础,放在这里比较合适一点。

这一节中我们需要做的,只是将OV7725初始化为YUV422格式输出,同时提取Y分量的信号,作为灰度视频源。

此时我们将注意力转移到OV7725的寄存器配置中来。前面我们已经完成了RGB565格式、RAW8格式的视频流输出配置,我们只需要修改极少的一两个寄存器,便能转换为YUV422输出。关于COM7Bit[1:0],仅需修改此处便能配置为YUV422格式输出,寄存器如下所示:

这里设置为VGA、YUV即可,即0x00。

此外,在{COM3[4],DSP_Ctrl3[7]}中设置YUV格式视频流的序列。寄存器如下图所示:

最常见的格式为Cb、Y、Cr、Y,即UYVYUYVU,上图中10模式,因此这里通过COM3[4]以及Dsp_ctrl3[7]将YUV视频流设置为UYVYUYVY,配置列表如下所示:

  15 :   LUT_DATA    =   {8'h0c, 8'h10}; //COM3: Bit[6]:Horizontal mirror image ON/OFF, Bit[0]:Color bar; Default:8'h10

  21  :   LUT_DATA    =   {8'h66, 8'h00}; //{COM3[4](0x0C), DSP_Ctrl3[7]}:00:YUYV;    01:YVYU;  [10:UYVY]   11:VYUY

不过有一个值得开心的事情是,RGB565与YUV格式输出的视频,每行均有640*2个像素,及速率完全一样,因此我们可以直接套用CMOS_Capture_RGB565的采集框架,只提取拼接后的低8Bit—Y即可。

不过Bingo经过无数次试验测试,以及反复的寄存器修改,发现修改拼接后,低8Bit仍然为Cb或Cr,而高8Bit则为Y。不知道是手册Bug还是Bingo有不到之处(望指正)。因此Wire CMOS_Capture_RGB565输出拼接后的数据如下:

wire  [7:0]   cmos_frame_Y;

wire  [7:0]   cmos_frame_CbCr;

.cmos_frame_data      ({cmos_frame_Y,cmos_frame_CbCr}),

同时将cmos_frame_Y发送给USB_Data,如下:

assign    USB_Data = cmos_frame_Y;

至此,完成YCbCr422灰度Y的提取,直接发送给USB_Data,其他信号均与前一节保持一致。全编译后下载jic文件,在USB_Camera_VIP_Panel中选Gray8Bit模式,显示灰度视频如下左所示:

如果由于设置或采集的错位,错位了的Y与CbCr之间的序列,得到的Cb、Cr通过Gray8Bit模式显示的图像如上图右所示。可见色差的信息,与图像亮度的关系。

楼主可见

  1. 木易 2#
    @xjcupid

    直接要代码不合适吧!
  2. xjcupid 1#

    该贴对我的学习很有帮助,大榭~~!

    请问 “详见07_ HDL_VIP_Examples下“05_USB_OV7725_YCbCr2Gray_Demo”工程。”该代码在何处可以找到呢?