資源簡介
使用C++與Python實現的引導濾波(guided image filter)代碼,附件中包含一個cpp文件、一個python文件與一張測試圖像。
博客鏈接為:https://blog.csdn.net/u013921430/article/details/99695647

代碼片段和文件信息
#?-*-?coding:?utf-8?-*-
“““
Created?on?Sat?Aug?17?18:46:20?2019
@author:?不用先生
“““
import?cv2
import?numpy?as?np
input_fn=‘03.jpg‘
def?my_guidedFilter_oneChannel(srcImgguidedImgrad=9eps=0.01):
????
????srcImg=srcImg/255.0
????guidedImg=guidedImg/255.0
????img_shape=np.shape(srcImg)
????
#????dstImg=np.zeros(img_shapedtype=float)
#????
#????P_mean=np.zeros(img_shapedtype=float)
#????I_mean=np.zeros(img_shapedtype=float)
#????I_square_mean=np.zeros(img_shapedtype=float)
#????I_mul_P_mean=np.zeros(img_shapedtype=float)
#????var_I=np.zeros(img_shapedtype=float)
#????cov_I_P=np.zeros(img_shapedtype=float)
#????
#????a=np.zeros(img_shapedtype=float)
#????b=np.zeros(img_shapedtype=float)
#????a_mean=np.zeros(img_shapedtype=float)
#????b_mean=np.zeros(img_shapedtype=float)
????
????P_mean=cv2.boxFilter(srcImg?-1?(rad?rad)?normalize=True)?
????I_mean=cv2.boxFilter(guidedImg-1?(rad?rad)?normalize=True)?
????
????I_square_mean=cv2.boxFilter(np.multiply(guidedImgguidedImg)?-1?(rad?rad)?normalize=True)?
????I_mul_P_mean=cv2.boxFilter(np.multiply(srcImgguidedImg)?-1?(rad?rad)?normalize=True)
????
????var_I=cv2.boxFilter(I_square_mean-np.multiply(I_meanI_mean)?-1?(rad?rad)?normalize=True)
????cov_I_P=cv2.boxFilter(I_mul_P_mean-np.multiply(I_meanP_mean)?-1?(rad?rad)?normalize=True)
????
????a=cov_I_P/(var_I+eps)
????b=P_mean-np.multiply(aI_mean)
????
????a_mean=cv2.boxFilter(a?-1?(rad?rad)?normalize=True)?
????b_mean=cv2.boxFilter(b?-1?(rad?rad)?normalize=True)?
????
????dstImg=np.multiply(a_meanguidedImg)+b_mean
????
????return?dstImg*255.0
????
def?my_guidedFilter_threeChannel(srcImgguidedImgrad=9eps=0.01):
????
????img_shape=np.shape(srcImg)
????dstImg=np.zeros(img_shapedtype=float)
????for?ind?in?range(0img_shape[2]):
????????dstImg[::ind]=my_guidedFilter_oneChannel(srcImg[::ind]
??????????????guidedImg[::ind]radeps)
????
????dstImg=dstImg.astype(np.uint8)
????
????return?dstImg
def?main():
????img=cv2.imread(input_fn)
????print(np.shape(img))
????dstimg=my_guidedFilter_threeChannel(imgimg90.01)
????print(np.shape(dstimg))
#????cv2.imwrite(‘output.jpg‘dstimg)
????cv2.imshow(‘output‘dstimg)
????cv2.waitKey(0)
????
if?__name__?==?‘__main__‘:
????main()
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????81718??2018-11-25?20:33??引導濾波_Cpp_Python\03.jpg
?????文件???????2342??2019-08-17?22:47??引導濾波_Cpp_Python\guided?filter.py
?????文件???????5024??2019-08-18?10:02??引導濾波_Cpp_Python\guidedFilter.cpp
?????目錄??????????0??2019-08-18?10:03??引導濾波_Cpp_Python
-----------?---------??----------?-----??----
????????????????89084????????????????????4
- 上一篇:自適應圖像增強完整OpenCV代碼
- 下一篇:QT錄屏源碼 ,無BUG
評論
共有 條評論