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

news2024/12/23 19:17:44

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

设置较大的干扰,PSNR=15。

设置较小的干扰,PSNR=25。

2.算法运行软件版本

matlab2022a

vivado2019.2

3.部分核心程序

`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 [7:0] o_PSNR;
integer fids1,fids2,idx=0,dat1,dat2;
 
//D:\FPGA_Proj\FPGAtest\codepz\test0N.bmp 路径改为自己的路径 

initial 
begin
	fids1 = $fopen("D:\\FPGA_Proj\\FPGAtest\\codepz\\test0.bmp","rb");
	dat1 = $fread(tmps1,fids1);
	$fclose(fids1);
	fids2 = $fopen("D:\\FPGA_Proj\\FPGAtest\\codepz\\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_PSNR     (o_PSNR)
);

//integer fout1;
//initial begin
// fout1 = $fopen("medfilter.txt","w");
//end

//always @ (posedge i_clk)
// begin
//    if(idx<=67131)
//	$fwrite(fout1,"%d\n",o_medfilter);
//    else
//    $fwrite(fout1,"%d\n",0);
//end

endmodule
0X_019m

4.算法理论概述

       基于FPGA的图像PSNR(峰值信噪比)质量评估计算实现涉及到数字图像处理、硬件设计和编程等多个领域。PSNR是一种用于评估图像质量的指标,它衡量了原始图像和经过处理后的图像之间的相似程度。PSNR值越大,表示处理后的图像质量越好。基于FPGA的图像PSNR质量评估计算实现通过硬件加速,可以实现对图像质量的实时评估,为图像处理算法的优化和调试提供有力的支持。

PSNR的计算公式如下:

PSNR = 10 × log10((MAX_I^2) / MSE)

       其中,MAX_I表示图像的最大像素值,MSE表示原始图像和处理后的图像之间的均方误差。均方误差的计算公式如下:

MSE = (1 / (M × N)) × ΣΣ[I(i,j) - K(i,j)]^2

       其中,I(i,j)表示原始图像中像素(i,j)的灰度值,K(i,j)表示处理后图像中像素(i,j)的灰度值,M和N分别表示图像的行数和列数。

      基于FPGA的图像PSNR质量评估计算实现需要将上述数学公式转化为硬件电路,通过编程实现对图像的实时处理和质量评估。具体步骤如下:

  1. 图像输入:将待评估的图像数据输入到FPGA中。
  2. 计算均方误差:根据输入的原始图像和处理后的图像,计算它们之间的均方误差。这需要设计相应的硬件电路,对每个像素进行差值平方和累加操作。
  3. 计算PSNR:根据计算得到的均方误差和图像的最大像素值,计算PSNR值。这需要设计相应的硬件电路,实现上述PSNR计算公式的功能。
  4. 输出结果:将计算得到的PSNR值输出到显示器或其他输出设备中,完成图像质量评估。

        综上所述,基于FPGA的图像PSNR质量评估计算实现需要结合数字图像处理、硬件设计和编程等多个领域的知识,通过合理的算法设计和硬件优化,实现对图像质量的实时评估和提升。

5.算法完整程序工程

OOOOO

OOO

O

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1135917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Keil 4 软件安装包下载及安装教程(图文详解)

目录 一.简介 二.安装教程 Keil4&#xff08;32/64&#xff09;位下载地址&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1F72jjsTjeOCLCVeL1c1qXg 密码&#xff1a;24nu 一.简介 Keil C51是一款由Keil Software&#xff08;现在是ARM公司的一部分&#xff09…

麒麟KYLINOS上使用开始菜单图标开启或关闭vnc

原文链接&#xff1a;麒麟KYLINOS上使用开始菜单图标开启或关闭vnc hello&#xff0c;大家好啊&#xff0c;今天给大家带来第二篇在麒麟KYLINOS上安装部署vnc的文章&#xff0c;本篇文章讲述了如何将vnc的开启及关闭做成图标展示在开始菜单&#xff0c;并且设置当第一次启动vnc…

【LeetCode:2520. 统计能整除数字的位数 | 模拟 | HashMap】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【问题解决】发现Web应用程序源代码泄露模式

1. 漏洞描述 AppScan扫描软件的安全报告中&#xff0c;有一类漏洞被描述为&#xff1a;“发现Web应用程序源代码泄露模式”。 该类问题指的是在服务器端&#xff0c;Web应用程序的开发者工具(Devtools)中的Sources面板中可以看到前端build构建之后的相关源代码&#xff0c;包…

Win10+Ubuntu20.04双系统双硬盘(SSD+HDD)安装与启动

Win10Ubuntu20.04双系统双硬盘安装与启动 前言准备工作Step 1: 备份你的数据Step 2: 制作安装Ubuntu的磁盘分区若以方式2进行安装&#xff1a;若以方式3进行安装&#xff1a; Step 3: 下载ubuntuStep 4: 制作ubuntu启动U盘Step 5: 从U盘启动ubuntuStep 6: 安装ubuntuStep 7: 系…

9.(vue3.x+vite)组件间通信方式之EventBus

前端技术社区总目录(订阅之前请先查看该博客) 示例效果 EventBus的简介 EventBus 又称为事件总线。是所有组件共用相同的事件中心,可以向该中心注册发送事件或接收事件,所以组件都通知到其他组件,但也就是太方便所以若使用不慎,就会造成难以维护的“灾难”。 其具体的思…

纯干货!一个白帽子挖漏洞经验细致分享

不知道是不是很多人和我一样&#xff0c;每天刷着漏洞&#xff0c;看着自己的排名一位一位的往上提升&#xff0c;但是&#xff0c;但是。总感觉怪怪的&#xff0c;为什么别人刷的漏洞都是现金&#xff0c;而自己刷的漏洞都是给库币。别人一天为什么提交那么多漏洞&#xff0c;…

ES6新增循环对象的四种方法(通俗易懂)

在我们ES6之前&#xff0c;我们一般都是用for…in来循环对象&#xff0c;现在我们ES6为我们新增了几种方法&#xff0c;让我为大家介绍一下吧&#xff01; 1.Object.keys() 静态方法返回一个由给定对象自身的可枚举的字符串键属性名组成的数组 const obj {name:"zs&quo…

如何在Pacman (Arch Linux)中用Configuration设置HTTP?

首先&#xff0c;确定HTTP爬虫服务器的IP地址和端口。在这个例子中&#xff0c;我们将使用一个免费的HTTP爬虫服务器&#xff1a;getproxy。 接下来&#xff0c;按照以下步骤在 Pacman (Arch Linux) 中设置HTTP爬虫&#xff1a; 1、打开终端。 2、使用以下命令进入 Pacman …

FLStudio2024汉化破解版在哪可以下载?

水果音乐制作软件FLStudio是一款功能强大的音乐创作软件,全名:Fruity Loops Studio。水果音乐制作软件FLStudio内含教程、软件、素材,是一个完整的软件音乐制作环境或数字音频工作站... FL Studio21简称FL 21&#xff0c;全称 Fruity Loops Studio 21&#xff0c;因此国人习惯叫…

极米科技全面发力4K产品,极米H6 Pro 4K、H6 4K高亮定焦版任你选

今年以来&#xff0c;在促进消费升级、新兴渠道红利放缓等多方因素作用之下&#xff0c;智能投影行业成为家电品类中的亮点。极米科技、海信视像、联合光电、京东方等多家上市公司及京东等产业链巨头均在智能投影布局上提速。 其中&#xff0c;极米科技今年在产品布局上更是动…

【数智化人物展】同方有云联合创始人兼总经理江琦:云计算,引领数智化升级的动能...

江琦 本文由同方有云联合创始人兼总经理江琦投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 数据智能产业创新服务媒体 ——聚焦数智 改变商业 在这个飞速发展的数字时代&#xff0c;我们置身于一个前所未有的机遇与挑战并存的时刻。数字化转型不再仅仅是一…

每日一题 2520. 统计能整除数字的位数(简单)

简单题频率好高&#xff0c;预测一波明天困难 class Solution:def countDigits(self, num: int) -> int:ans 0for i in str(num):if num % int(i) 0:ans 1return ans

什么是电流电压频谱?

什么是电流电压频谱&#xff1f; 首先&#xff0c;让我们来了解什么是电流电压的频谱。在交流电&#xff08;AC&#xff09;系统中&#xff0c;电流和电压是随时间变化而变化的。它们可以表示为时间的函数&#xff0c;即i(t)和u(t)。将这两个时间函数进行傅里叶变换&#xff0c…

IDEA常用的一些插件

1、CodeGlance 代码迷你缩放图插件&#xff0c;可以快速拖动代码&#xff0c;和VScode一样 2、Codota 代码提示工具&#xff0c;扫描你的代码后&#xff0c;根据你的敲击完美提示。 Codota基于数百万个开源Java程序和您的上下文来完成代码行&#xff0c;从而帮助您以更少的…

Vue 商场首页头部布局

封装基础网络请求&#xff0c;前后端联调请求后端接口 npm install axios -Ssrc/network/requestConfig.js import axios from axios; import store from "/store"; export function request(config){const instance axios.create({baseURL:"http://127.0.0.…

用GoAccess可视化监控npm日志

什么是 GoAccess&#xff1f; GoAccess 是一个开源实时 Web 日志分析器和交互式查看器&#xff0c;可在 *nix 系统的终端中或通过浏览器运行。它为需要动态可视化服务器报告的系统管理员提供快速且有价值的 HTTP 统计信息。 什么是 GoAccess for Nginx Proxy Manager Logs? Go…

【C++入门到精通】 哈希结构 | 哈希冲突 | 哈希函数 | 闭散列 | 开散列 [ C++入门 ]

阅读导航 引言一、哈希概念二、哈希冲突三、哈希函数⭕哈希函数应具备的特点⭕哈希函数设计原则⭕常见的哈希函数&#xff08;1&#xff09;直接定址法&#xff08;重要&#xff09;&#xff08;2&#xff09;除留余数法&#xff08;重要&#xff09;&#xff08;3&#xff09;…

详解预处理(1)

目录 预定义符号 预处理指令#define #define定义符号 #define定义宏 #define替换规则 #和##&#xff08;C语言预处理操作符&#xff09; # ## 带副作用的宏参数 宏和函数的对比 命名约定 在之前我们学习了一个文本文件.c生成一个可执行程序。今天我们详细讲解其中的…

BUUCTF 基础破解 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 给你一个压缩包&#xff0c;你并不能获得什么&#xff0c;因为他是四位数字加密的哈哈哈哈哈哈哈。。。不对 我说了什么了不得的东西。。 密文&#xff1a; 下载附件解压&#xff0c;发现一个rar压缩包。 解题思…