您好,登錄后才能下訂單哦!
1. 概述
3D降噪算法是將前后兩幀的圖像進行對比處理,找出噪點位置,然后對其增益控制。3D數字降噪功能能夠降低弱信號圖像的噪波干擾。
2. 函數接口
HI_S32 HI_MPI_VPSS_SetGrpParam(VPSS_GRP VpssGrp, VPSS_GRP_PARAM_S*pstVpssParam);
參數名稱 | 描述 | 輸入/輸出 |
VpssGrp | VPSS GROUP號 | 輸入 |
pstVpssParam | 高級屬性設置 | 輸入 |
VPSS_GRP_PARAM_S結構體:
typedef struct hiVPSS_GRP_PARAM_S { HI_U32 u32Contrast; //保留 HI_S32 s32GlobalStrength; //3DNR降噪強度,[0.1408] HI_S32 s32IeStrength; //圖像紋理增強,[-1,100] HI_S32 s32YSFStrength; //亮度空域去噪強度,[-1,100] HI_S32 s32YTFStrength; //亮度時域去噪強度,[-1,15] HI_S32 s32CSFStrength; //色度空域去噪強度,[-1,255] HI_S32 s32CTFStrength; //色域時域去噪強度,[-1,32] HI_S32 s32MotionLimen; //運動閾值,表示NR強度,[-1,32] }VPSS_GRP_PARAM_S;
空域降噪是對單幀進行采樣,降噪會犧牲更多的細節;時域降噪是對前后幀進行分析,盡量保留畫面細節,但是拍攝劇烈運動可能會有拖影。在實際應用中可根據不同的側重點(細節、運動、亮度、色度)來調整VPSS_GRP_PARAM_S結構體的成員變量。
3. PQTools設置界面
4. 代碼設計
在SDK包的mpp/tools目錄下編寫應用程序代碼,具體代碼如下:
/* File Name: vpss_attr_3dnr.c Author: shugen.yin Date: 2017.2.10 Function: 3DNR setting log: */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "hi_common.h" #include "hi_comm_video.h" #include "hi_comm_sys.h" #include "hi_comm_vo.h" #include "hi_comm_vi.h" #include "hi_comm_vpss.h" #include "hi_type.h" #include "mpi_vb.h" #include "mpi_sys.h" #include "mpi_vi.h" #include "mpi_vo.h" #include "mpi_vpss.h" #define CHECK_RET(express,name)\ do{\ if (HI_SUCCESS != express)\ {\ printf("%s failed at %s: LINE: %d ! errno:%#x \n", \ name, __FUNCTION__, __LINE__, express);\ return HI_FAILURE;\ }\ }while(0) HI_S32 main() { HI_S32 s32Ret=0; HI_U8 u8Index = 0; VPSS_GRP VpssGrp = 0; VPSS_GRP_ATTR_S stVpssGrpAttr = {0}; VPSS_GRP_PARAM_S stVpssGrpParam = {0}; HI_S32 s32NrParam[4][8] = { {0x0, 0x2f8, 0x0, 0x20, 0xc, 0x8, 0x6, 0x0}, {0x0, 0x330, 0x0, 0x20, 0xc, 0x8, 0x6, 0x0}, {0x0, 0x3ea, 0x0, 0x20, 0xc, 0x8, 0x6, 0x0}, {0x0, 0x458, 0x0, 0x20, 0xc, 0xe, 0xc, 0x0} }; s32Ret = HI_MPI_VPSS_GetGrpAttr(VpssGrp, &stVpssGrpAttr); CHECK_RET(s32Ret, "HI_MPI_VPSS_GetGrpAttr"); s32Ret = HI_MPI_VPSS_GetGrpParam(VpssGrp, &stVpssGrpParam); CHECK_RET(s32Ret, "HI_MPI_VPSS_GetGrpParam"); stVpssGrpAttr.bNrEn = 1; stVpssGrpParam.u32Contrast = s32NrParam[u8Index][0]; stVpssGrpParam.s32GlobalStrength = s32NrParam[u8Index][1]; stVpssGrpParam.s32IeStrength = s32NrParam[u8Index][2]; stVpssGrpParam.s32YSFStrength = s32NrParam[u8Index][3]; stVpssGrpParam.s32YTFStrength = s32NrParam[u8Index][4]; stVpssGrpParam.s32CSFStrength = s32NrParam[u8Index][5]; stVpssGrpParam.s32CTFStrength = s32NrParam[u8Index][6]; stVpssGrpParam.s32MotionLimen = s32NrParam[u8Index][7]; s32Ret = HI_MPI_VPSS_SetGrpAttr(VpssGrp, &stVpssGrpAttr); CHECK_RET(s32Ret, "HI_MPI_VPSS_SetGrpAttr"); s32Ret = HI_MPI_VPSS_SetGrpParam(VpssGrp, &stVpssGrpParam); CHECK_RET(s32Ret, "HI_MPI_VPSS_SetGrpParam"); return 0; }
5. 編譯運行
在mpp/tools目錄下執行make命令,生成vpss_attr_3dnr可執行程序,將此可執行程序復制到目標板卡中,執行./vpss_attr_3dnr,3DNR算法模塊開始工作。
6. 最終結果
在沒有運行vpss_attr_3dnr時,視頻顯示結果如下圖所示,畫面有明顯的弱噪聲。
運行vpss_attr_3dnr后,視頻顯示結果如下圖所示,弱噪聲得到明顯抑制。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。