YUV影像質量的客觀評估SSIM matlab程式碼實現
YUV影像質量的客觀評估SSIM matlab程式碼實現
yuv420p-ssim.m
function [ mssim_Y, mssim_U, mssim_V ] = yuv420p_ssim( file0, N0, w0, h0, file1, N1, w1, h1 )
fp0 = fopen(file0, 'rb');
fp1 = fopen(file1, 'rb');
fseek(fp0, N0 * w0 * h0 * 3 / 2, 0);
fseek(fp1, N1 * w1 * h1 * 3 / 2, 0);
ima_Y = fread(fp0, [w0, h0], 'uchar');
ima_U = fread(fp0, [w0 / 2, h0 / 2], 'uchar');
ima_V = fread(fp0, [w0 / 2, h0 / 2], 'uchar');
imb_Y = fread(fp1, [w1, h1], 'uchar');
imb_U = fread(fp1, [w1 / 2, h1 / 2], 'uchar');
imb_V = fread(fp1, [w1 / 2, h1 / 2], 'uchar');
[mssim_Y, ssim_map_Y,siga_sq_Y,sigb_sq_Y] = ssim(ima_Y, imb_Y);
[mssim_U, ssim_map_U,siga_sq_U,sigb_sq_U] = ssim(ima_U, imb_U);
[mssim_V, ssim_map_V,siga_sq_V,sigb_sq_V] = ssim(ima_V, imb_V);
fclose(fp0);
fclose(fp1);
end
ssim.m
function [mssim, ssim_map,siga_sq,sigb_sq] = SSIM(ima, imb)
% ========================================================================
%ssim的演算法主要參考如下論文:
%Z. Wang, A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli, "Image
% quality assessment: From error visibility to structural similarity,"
% IEEE Transactios on Image Processing, vol. 13, no. 4, pp. 600-612,
% Apr. 2004.
% 首先對影像加窗處理,w=fspecial('gaussian', 11, 1.5);
% (2*ua*ub+C1)*(2*sigmaa*sigmab+C2)
% SSIM(A,B)=————————————————————————
% (ua*ua+ub*ub+C1)(sigmaa*sigmaa+sigmab*sigmab+C2)
% C1=(K1*L);
% C2=(K2*L); K1=0.01,K2=0.03
% L為灰度級數,L=255
%-------------------------------------------------------------------
% ima - 比較影像A
% imb - 比較影像B
%
% ssim_map - 各加窗後得到的SSIM(A,B|w)組成的對映矩陣
% mssim - 對加窗得到的SSIM(A,B|w)求平均,即最終的SSIM(A,B)
% siga_sq - 影像A各視窗內灰度值的方差
% sigb_sq - 影像B各視窗內灰度值的方差
%-------------------------------------------------------------------
% Cool_ben
%========================================================================
w = fspecial('gaussian', 11, 1.5); %window 加窗
K(1) = 0.01;
K(2) = 0.03;
L = 255;
ima = double(ima);
imb = double(imb);
C1 = (K(1)*L)^2;
C2 = (K(2)*L)^2;
w = w/sum(sum(w));
ua = filter2(w, ima, 'valid');%對視窗內並沒有進行平均處理,而是與高斯卷積,
ub = filter2(w, imb, 'valid'); % 類似加權平均
ua_sq = ua.*ua;
ub_sq = ub.*ub;
ua_ub = ua.*ub;
siga_sq = filter2(w, ima.*ima, 'valid') - ua_sq;
sigb_sq = filter2(w, imb.*imb, 'valid') - ub_sq;
sigab = filter2(w, ima.*imb, 'valid') - ua_ub;
ssim_map = ((2*ua_ub + C1).*(2*sigab + C2))./((ua_sq + ub_sq + C1).*(siga_sq + sigb_sq + C2));
mssim = mean2(ssim_map);
return
reference:
https://blog.csdn.net/ecnu18918079120/article/details/60149864
相關文章
- 基於FPGA的NC影像質量評估verilog實現,包含testbench和MATLAB輔助驗證程式FPGAMatlab
- 使用PyLint分析評估程式碼質量
- opencv-9-影像噪聲以及評估指標 PSNR 與SSIMOpenCV指標
- 實時音視訊質量評估方案
- 影像壓縮編碼碼matlab實現——行程編碼Matlab行程
- 影像壓縮編碼碼matlab實現——DM編碼Matlab
- VMAF影片質量評估使用方法
- 影像壓縮編碼碼matlab實現——變換編碼Matlab
- 影像壓縮編碼碼matlab實現——算術編碼Matlab
- OCLint 實現 Code Review - 給你的程式碼提提質量View
- RGB2YUV 的verilog實現(RGB轉YUV)
- 影像壓縮編碼碼matlab實現——常用引數計算Matlab
- matlab實現 線性拉伸某灰度影像的對比度 程式碼 對比度拉伸Matlab
- 程式碼質量第 5 層 - 只是實現了功能
- matlab中中影象PSNR和SSIM的計算Matlab
- 前端程式碼質量的思考與實踐前端
- 監管機器翻譯質量?且看阿里如何搭建翻譯質量評估模型阿里模型
- 聊聊傳統質量觀 VS 敏捷質量觀敏捷
- 牛客網Java評估題Java
- 如何有效地評估待用於微調的樣本質量
- 音訊質量評估及音訊處理常用功能音訊
- 課堂教學行為質量評估檢測系統
- 【音視訊專題】音訊質量評估方法那些事音訊
- GitHub專案的質量應該由他們的星數來評估嗎?Github
- 量子圖形加密演算法的MATLAB程式碼實現加密演算法Matlab
- 國產開源專案XXCloud評價-程式碼質量走查與評價Cloud
- 相對現代化的把控前端程式碼質量前端
- 億信華辰:怎樣去斷定一份資料的質量高低?資料質量如何評估?
- 使用者評論程式碼實現
- 評價模型TOPSIS與熵權法MATLAB程式碼模型熵Matlab
- 如何客觀的評價 Go 語言Go
- 如何做好質量管理、提高研發的程式碼質量?
- Sonar程式碼質量管理
- 程式碼質量第 4 層 - 健壯的程式碼
- 程式碼質量第 3 層 - 可讀的程式碼
- 程式碼質量第 2 層 - 可重用的程式碼
- 達觀資料:怎樣評價推薦系統的結果質量?
- 零程式碼教你安裝部署Stable Diffusion 3,一鍵生成高質量影像