• 大小: 68KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: C/C++
  • 标签: 引导滤波  OpenC  

资源简介

使用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


评论

共有 条评论