本帖最后由 FPGA课程 于 2024-10-17 13:24 编辑
软件版本:VIVADO2021.1
操作系统:WIN10 64bit
硬件平台:适用 XILINX A7/K7/Z7/ZU/KU 系列 FPGA
实验平台:米联客-MLK-H3-CZ08-7100开发板
板卡获取平台:https://milianke.tmall.com/
登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑!
1 图像中心差分变换算法简介差分图像就是目标场景在连续时间点图像相减所构成的图像,广义的差分图像定义为目标场景在时间点 tk 和 tk+L 所成图像的差别。差分图像是由目标场景在相邻时间点的图像相减得到的,从而能够得到目标场景随时间的变 换。差分图像在许多领域得到了广泛的应用,比如:视频压缩,生物医学诊断,天文学,遥感,人脸识别等。 中心差分图像公式如下:
Ix表示图像像素值,由公式可以得到中心差分像素值。
2 设计分析2.1Matlab代码分析 源代码如下:
- clear;clear all;clc;
- image_in = imread('lena_1280x720.jpg'); % [row,col,n] = size(image_in);
- image_gray=rgb2gray(image_in);
- image_pad = padarray(image_gray,[1,1],'symmetric','both');%功能填充图像或天补充数组 %用法 b = padarray(a,padsize,padval,direction)
- padsize 为给出了填充的行数和列数,padval 为‘symmetric’对边界镜像反射来扩展
- ‘replicate’表示图像大小通过复制外边界中的值来扩展'circular’图像大小通过将图像看成是一个二维周期函数的一个 周期来进行扩展。
- direction 表示填充的方向。它的具体值和描述如下: direction : 'pre’表示在每一维的第一个元素前填充; 'post’表示在每一维的最后一个元素后填充;
- 'both’表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。
- [row,col] = size(image_pad);
- image_mid_diff = zeros(row,col);
- image_mid_diff(:,2:col-1)= (image_pad(:,3:col)-image_pad(:,1:col-2))/2;%列差分
- % image_mid_diff(2:row-1,:)= (image_pad(3:row,:)-image_pad(1:row-2,:))/2;%行差分 image_mid_diff = image_mid_diff(2:end-1,2:end-1);
- Figure
- subplot(131);
- imshow(image_in), title('the original image'); subplot(132);
- imshow(image_gray), title('the translated image '); subplot(133);
- imshow(image_mid_diff), title('the translated image 1');
复制代码
2.2Verilog代码分析 - always@(posedge i_clk ) begin
- i_hsyn_d <= {i_hsyn_d[0],i_hsyn}; i_vsyn_d <= {i_vsyn_d[0],i_vsyn}; i_en_d <= {i_en_d[0] ,i_en}; i r d <= {i r d[7:0] ,i_r};
- i g d <= {i g d[7:0] ,i_g}; i b d <= {i b d[7:0] ,i_b};
- end
- always@(posedge i_clk ornegedge i_rst_n) begin
- if(!i_rst_n) begin
- diff_reg_r <= 8'd0; diff_reg_g <= 8'd0; diff_reg_b <= 8'd0;
- end else begin
- diff_reg_r <= (i r d[15:8]-i_r)>>1; diff_reg_g <= (i_g_d[15:8]-i_g)>>1; diff_reg_b <= (i b d[15:8]-i_b)>>1;
- end end
复制代码
3 工程结构分析我们将图像中心差分变换的模块做成 IP 后,在vivado 中进行工程的搭建,工程结构如图所示:
4 仿真及结果4.1Matlab实验结果
4.2Modelsim实验结果
5 搭建 Vitis-sdk 工程创建 soc_base sdk platform 和 APP 工程的过程不再重复,可以阅读 3-3-01_sdk_base_app。以下给出创建好soc_base sdk platform 的截图和对应工程 APP 的截图。 5.1 创建 SDKPlatform工程
5.2SDKAPP工程
6 硬件连接硬件连接如图所示:
7 上板实验结果 实验结果如图所示:
|