首页 > 其他分享 >简单处理——FPGA实现图像中心差分变换

简单处理——FPGA实现图像中心差分变换

时间:2024-04-12 18:01:32浏览次数:22  
标签:dimg img FPGA 差分 图像 row

简单处理——FPGA实现图像中心差分变换

一、图像中心差分变换算法简介

​ 差分图像就是目标场景在连续时间内图像相减所构成的图像,对图像进行中心差分变换的主要目的是计算图像中心每个像素点的梯度,而 每个像素点的梯度在图像处理中就可以被用于描述图像中灰度变化的快慢和方向。

​ 广义的差分图像定义为目标场景点在相邻时间点的图像相减得到的。公式为:

​ Ix = (I(x+1)-I(x-1))/2

​ 实际在进行中心差分计算的过程中还需要主义的是所计算梯度的方向,是分dx和dy的,也就是分为水平方向的中心差分计算和垂直方向的中心差分计算的;水平方向的中心差分计算简单通过打拍即可进行相加减,垂直方向的中心差分计算可能要涉及到多FIFO的流水线操作,本节中暂不进行相关介绍,在sobel算子的相应章节会进行相关介绍。

二、MATLAB实现

function dimg =centraldiff(img,direction)

%表示对输入的img进行边界填充,symmetric表示是对称填充方式,both表示上下左右都进行填充
img = padarray(img,[1,1],'symmetric','both');

%获取边界填充之后图像的行列信息,理论上都是原来的基础上+2
[row,col] = size(img);
dimg = zeros(row,col);

%根据所选择的方向分别进行差分运算,这里由于是一个后向减前向除以2,边界填充再差分之后刚刚好与原来一致
switch(direction)
    case'dx'
        dimg(:,2:col-1)= (img(:,3:col)-img(:,1:col-2))/2;
    case'dy'
        dimg(2:row-1,:)= (img(3:row,:)-img(1:row-2,:))/2;
    otherwise
        disp('Direction is unknown');
end

%完事了之后要进行裁剪,剪掉之前填充的像素
dimg = dimg(2:end-1,2:end-1);

6.1

​ 和我们之前进行的差分化处理来对比的话,中心差分变化更侧重于像素本身变化的大小,而不是视觉上的视觉突出,所以理论上更适用于生物医学v诊断和遥感影像。

三、FPGA实现与上板实现

//对差分数据的差右移一位以完成除以2的操作
assign cdc_data = (pre_data - pre_data_d2) >> 1;

//对数据进行打两拍,同时对时序打拍让时序对齐
always @(posedge clk or negedge rst_n) begin
    if (rst_n == 1'b0) begin
        // reset
        pre_hsync_d <= 0;
        pre_vsync_d <= 0;
        pre_de_d    <= 0;
        {pre_data_d2, pre_data_d1} <= 0;
    end
    else begin
        {pre_hsync_d[1], pre_hsync_d[0]}    <= {pre_hsync_d[0], pre_hsync};
        {pre_vsync_d[1], pre_vsync_d[0]}    <= {pre_vsync_d[0], pre_vsync};
        {pre_de_d[1], pre_de_d[0]}          <= {pre_de_d[0], pre_de};
        {pre_data_d2, pre_data_d1}          <= {pre_data_d1, pre_data};
    end
end

6.2

​ 可以看到总体的实现效果是不错的,细微处可能有所区别,可能的原因有两处:一是差分图像计算的结果可能为负数,在Verilog中无符号数相加减得到的值如果为负数,可能会隐去超出位宽的符号位,以补码形式来表示,得到负数时候可以对其求绝对值或者赋值0;二是在verilog实现过程中最后还要进行一个位宽匹配,将8bit数据转换为16bit,具体的成像的一个视觉效果会有所不同。

参考资料:[1]咸鱼FPGA [2]米联客FPGA

标签:dimg,img,FPGA,差分,图像,row
From: https://www.cnblogs.com/qier0220/p/18131837

相关文章

  • Rust教程 – 学习天文图像的多尺度处理
    最近,人们投入了大量精力开发新颖的图像处理技术。其中许多技术都源自于傅里叶和小波变换等数字信号处理方法。这些技术不仅使得各种图像处理技术如降噪、锐化和动态范围扩展成为可能,而且还使得计算机视觉中使用的许多技术如边缘检测、目标检测等成为可能。多尺度分析是相对较新......
  • G2D图像处理硬件调用和测试-基于米尔-全志T113-i开发板
    本篇测评由电子工程世界的优秀测评者“jf_99374259”提供。本文将介绍基于米尔电子MYD-YT113i开发板的G2D图像处理硬件调用和测试。 MYC-YT113i核心板及开发板真正的国产核心板,100%国产物料认证国产T113-i处理器配备2*[email protected],RISC-V外置DDR3接口、支持视频......
  • ViT:拉开Trasnformer在图像领域正式挑战CNN的序幕 | ICLR 2021
    论文直接将纯Trasnformer应用于图像识别,是Trasnformer在图像领域正式挑战CNN的开山之作。这种简单的可扩展结构在与大型数据集的预训练相结合时,效果出奇的好。在许多图像分类数据集上都符合或超过了SOTA,同时预训练的成本也相对较低 来源:晓飞的算法工程笔记公众号论文:AnI......
  • 图像预处理的数据精度问题报出的Nan
    问题描述:git上的一个官方项目,图像预处理操作,使用torch进行处理,包含Resize,ToTensor,Nomalize,处理后的结果输入到trt-fp16精度的模型中,可以正常输出。我对图像预处理进行了修改,使用opencv进行resize,numpy进行totensor,nomalize操作,处理后的结果输出到trt-fp16的模型中,发现输出结果......
  • 读论文-基于注意力机制的浅层图像隐写分析模型
    前言今天要读的论文是一篇名为《基于注意力机制的浅层图像隐写分析模型》,文章提出了一种基于注意力机制的浅层图像隐写分析模型,通过使用一个浅层神经网络控制模型参数量和训练时间,引入注意力模块,加速模型收敛,提升模型检测的准确率。要引用本文:请使用如下格式:段明月,李爽,钟小......
  • PIL图像转torch的tensor
    1、图片转TensorfromPILimportImageimportosimportnumpyasnpimporttorchfromtorchvisionimporttransformspic_location='dataset/1.png'img=Image.open(os.path.join(os.getcwd(),pic_location))#方法一img_convert_to_numpy=np.array(img)......
  • 911-基于6U VPX的光纤图像DSP实时计算平台
    一、系统组成   该平台基于风冷式的6U6槽VPX图像处理平台,包括:计算机主板、计算机主板后板、存储板、图像信号处理板、图像信号处理板后板、图像光纤转接板、机箱背板及机箱组成。图1为系统背板结构示意图:  图1:系统背板互联示意图 备注:上图槽5板卡为太速自研的......
  • 基于FPGA的DDR相关知识导航界面
      个人觉得想要真正理解DDR,那就要从SDRAM入手,SDRAM读写控制器也可以作为入门FPGA的一个判断标准,说实话I2C、UART、SPI这些接口难度太低了,会写这些接口说明不了什么。  很常见的问题,现在DDR3、SDRAM、DDR4官方都有IP,还需要自己写SDRAM驱动吗?意义在哪?  如果是工程使用......
  • CPU、DSP、MPU、MCU、SOC、FPGA、ARM等概念
    CPU、DSP、MPU、MCU、SOC、FPGA、ARM等概念参考资料:百度知道“stm32和cortexm3是什么关系”:https://zhidao.baidu.com/question/178510430.html知乎“DSP与MCU与ARM与FPGA有什么区别?”:https://www.zhihu.com/question/278500219/answer/405183375CSDN“MCU和SOC的区别”:ht......
  • 图像修复技术在AI去衣中的应用
    随着人工智能技术的飞速发展,图像处理领域也取得了长足的进步。其中,图像修复技术作为图像处理的重要组成部分,在AI去衣等应用场景中发挥着至关重要的作用。本文将深入探讨图像修复技术在AI去衣中的应用,并分析其背后的技术原理与实现方法。一、图像修复技术概述图像修复技术,......