基於FPGA的NC影像質量評估verilog實現,包含testbench和MATLAB輔助驗證程式

简简单单做算法發表於2024-05-25

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

  

相關文章