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

51 阅读2分钟

1.算法运行效果图预览

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

 

1.jpeg

2.jpeg

3.jpeg  

 

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`