基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
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