首页 > 编程语言 >基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序

基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序

时间:2024-05-25 23:11:51浏览次数:35  
标签:FPGA clk NC testbench fids1 图像 reg

1.算法运行效果图预览

vivado2019.2和matlab2022a测试,结果如下:

 

 

 

 

2.算法运行软件版本

vivado2019.2

 

matlab2022a

 

3.算法理论概述

       图像质量的含义包括图像的逼真度和图像的可读懂性。所谓图像的逼真度是指被评价图像与标准图像的偏离程度,偏差越小,逼真度越高。而图像的可读懂性是指由图像能向人或机器提供信息的能力,它不仅与图像系统的应用要求有关,而且常常与人眼的主观感觉有关。图像质量指标包括分辨率、色彩深度、图像失真等方面。

 

       NC图像质量评估指标是指用于评估图像质量的一种指标,通常用于图像处理和计算机视觉领域。NC代表"Normalized Cross-Correlation",即标准化的互相关。这一指标通常用于比较两幅图像的相似性或匹配程度。在图像质量评估中,NC指标可以用来衡量一幅图像与原始图像之间的相似度,从而评估图像的失真程度或质量损失。

 

 

 

 

4.部分核心程序

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2022/07/28 01:51:45
// Design Name: 
// Module Name: test_image
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
 
 
module test_image;
 
reg i_clk;
reg i_rst;
reg [7:0] tmps1 [0:100000];
reg [7:0] tmps2 [0:100000];
reg [7:0] Images1;
reg [7:0] Images2;
wire [15:0] o_NC;
integer fids1,fids2,idx=0,dat1,dat2;
 
//D:\FPGA_Proj\FPGAtest\codepz\test0N.bmp 路径改为自己的路径 
 
initial 
begin
	fids1 = $fopen("D:\\FPGA_Proj\\FPGAtest\\code2\\test0.bmp","rb");
	dat1 = $fread(tmps1,fids1);
	$fclose(fids1);
	fids2 = $fopen("D:\\FPGA_Proj\\FPGAtest\\code2\\test0N.bmp","rb");
	dat2 = $fread(tmps2,fids2);
	$fclose(fids2);
end
 
initial 
begin
i_clk=1;
i_rst=1;
#1000;
i_rst=0;
end 
 
always #5  i_clk=~i_clk;
 
always@(posedge i_clk) 
begin
    if(idx<=66613)
    begin
	Images1<=tmps1[idx];
	Images2<=tmps2[idx];
	end
	else begin
	Images1<=8'd0;
	Images2<=8'd0;
	end
	idx<=idx+1;
end
 
 
tops tops_u(
.i_clk      (i_clk),
.i_rst      (i_rst),
.i_images1  (Images1),
.i_images2  (Images2),
.o_NC       (o_NC)
);
 
 
endmodule

  

标签:FPGA,clk,NC,testbench,fids1,图像,reg
From: https://www.cnblogs.com/matlabworld/p/18213142

相关文章

  • Ubuntu16.04 opencv环境搭建(C++)
    Ubuntu下vscode跑opencv程序环境搭建。目录1ubuntu查看opencv版本2下载opencv包3依赖配置4进入安装包内执行5配置环境变量6VScode配置-下载c++扩展7编译运行helloworld8在vscode中配置opencv环境9运行结果1ubuntu查看opencv版本pkg-config--modversion......
  • Tokio Marine & Nichido Fire Insurance Programming Contest 2024(AtCoder Beginner C
    A-WhoAtetheCake?题意:有三个嫌疑犯(1,2,3(号码))现在有两个证人他们指出谁不是嫌疑犯,你可以找到确定的那个罪人吗?找到输出这个人的号码没找到输出-1思路:如果两人指出的人是一个人则输出-1不是则输出6-a-b,因为1+2+3=6(sum)减去a,b肯定可以到达......
  • [AIGC] 你能简要解释一下CompletableFuture中thenCompose()方法的用法吗?
    thenCompose()是CompletableFuture的一个方法,用于链接两个CompletableFuture对象。这可以用来促成函数式风格的编程,而无需再额外处理Future对象的嵌套。thenCompose()方法接受一个函数作为参数,这个函数的输入是先前CompletableFuture的结果,它返回的是一个新的Co......
  • Ncast高清智能录播系统存在任意文件读取漏洞以及busiFacade RCE漏洞
    漏洞描述由于系统对用户输入的文件路径未进行充分验证,允许用户输入任意文件路径,导致存在任意文件读取漏洞,攻击者可以利用该漏洞获取系统配置文件、密码文件等。该系统的/classes/common/busiFacade.php接口存在RCE漏洞,攻击者可以利用此漏洞执行任意命令。fofaapp="Ncast-产品"......
  • 如何让ALG、FPGA、EMU、SOC、SubIp实现驱动复用
       摘要        在芯片验证场景中,我们通常涉及到算法team、fpga测试team、EMUteam、SOC验证和Subip验证如何对芯片的完备性测试的探讨。由于各个team都是相互独立的,很多flow都是独立开发出来,对于交互的文件也是五花八门,这些文件各team协助起来很不方便,如何打通......
  • Engage with world in another way, Strench myself. dataism已经进入房间, 等待历史
    忘记历史,你就不会被历史所羁绊,你看到的每一天都是全新的。engagewithyourlife,而不是藏在生活的后面,liveinyourlife,notbehindoraboveyourlife,notpretenttolive,justliveinit.体现物体特性的其实是分子,而不是原子。虽然游离态的原子更自由,但是原子性质更单......
  • 利用Python+OpenCV实现截图匹配图像,支持自适应缩放、灰度匹配、区域匹配、匹配多个结
    一、依赖安装pipinstallopencv-pythonpipinstallpyautogui二、获取系统缩放比例注意:必须先通过ctypes获取wid之后才能导入pyautogui,如果需要在其它代码中引用该模块,最好把获取分辨率这部分代码放到程序入口处,然后传递给识图函数,避免提前导入pyautogui导致获取分辨率失......
  • Settings里面切换不同Launcher的代码流程
    1.Android\packages\modules\Permission\PermissionController中的DefaultAppActivity中接收,根据packagename进行追踪路径如下:DefaultAppActivity.java--->HandheldDefaultAppFragment.java--->DefaultAppChildFragment.java:setDefaultApp()--->ManageRoleHolderState......
  • 探索Go语言的原子操作秘籍:sync/atomic.Value全解析
    引言​在并发编程的世界里,数据的一致性和线程安全是永恒的话题。Go语言以其独特的并发模型——goroutine和channel,简化了并发编程的复杂性。然而,在某些场景下,我们仍然需要一种机制来保证操作的原子性。这就是sync/atomic.Value发挥作用的地方。原子性:并发编程的基石​......
  • SwiftUI中的组合动画(Simultaneous, Sequenced, Exclusive)
    了解了常见的几种手势后,接下来我们了解一下组合手势的操作,当一个视图存在多个手势的时候,为了避免手势冲突,SwiftUI提供了自定义手势的方法,比如同时进行,顺序进行等等。以下是一些常见的多种手势组合使用方式:simultaneously(with:):同时使用多个手势,使它们可以同时响应用户的......