多尺度图像细节提升(multi-scale detail boosting)Python版

论文核心思想是:使用三个尺度的高斯模糊,和原图做减法,获得不同程度的细节信息,然后通过一定的组合方式把这些细节信息融合到原图中,从而得到加强原图信息的能力。

以下给出python版本实现:

import cv2
import glob
import os
import numpy as np

def multiScaleSharpen(src, Radius):
    sigma1 = 1.0
    sigma2 = 2.0
    sigma3 = 4.0
    B1 = cv2.GaussianBlur(src, (Radius,Radius), sigma1)
    B2 = cv2.GaussianBlur(src, (Radius*2-1,Radius*2-1), sigma2)
    B3 = cv2.GaussianBlur(src, (Radius*4-1,Radius*4-1), sigma3)
    src = src.astype(np.float) # uint8 to float, avoid Saturation
    B1 = B1.astype(np.float)
    B2 = B2.astype(np.float)
    B3 = B3.astype(np.float)
    D1 = src - B1 # get detail
    D2 = B1 - B2
    D3 = B2 - B3
    w1 = 0.5
    w2 = 0.5
    w3 = 0.25
    result = (1 - w1* np.sign(D1))*D1 + w2 * D2 + w3 * D3 + src
    result_img = cv2.convertScaleAbs(result)
    return result_img

if __name__ == "__main__":
    img = cv2.imread("")
    result = multiScaleSharpen(img, 5)
    cv2.imwrite("",result)

更多细节可以参考大佬的文章:

【1】https://www.cnblogs.com/Imageshop/p/7895008.html

【2】https://blog.csdn.net/guyuealian/article/details/79065745

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PSO-GBDT (Particle Swarm Optimization - Gradient Boosting Decision Tree) 是一种用于多分类问题的机器学习算法。它将粒子群优化算法 (Particle Swarm Optimization, PSO) 与梯度提升决策树 (Gradient Boosting Decision Tree, GBDT) 结合起来,以提高多分类问题的准确性。 在 Python 中,可以使用 Scikit-learn 库中的 GradientBoostingClassifier 类来实现 GBDT 算法。同时,可以使用 PySwarm 库来实现 PSO 算法。 下面是一个使用 PSO-GBDT 算法进行多分类的 Python 示例代码: ```python from sklearn.ensemble import GradientBoostingClassifier from pyswarm import pso # 定义 PSO-GBDT 模型 def pso_gbdt(X, y): def objective_function(params): lr, md, mf, ne = params clf = GradientBoostingClassifier( learning_rate=lr, max_depth=md, max_features=mf, n_estimators=ne ) clf.fit(X, y) return 1 - clf.score(X, y) # 定义参数范围 lb = [0.01, 1, 1, 10] ub = [0.1, 5, X.shape[1], 100] # 运行 PSO 算法 xopt, fopt = pso(objective_function, lb, ub, swarmsize=10, maxiter=50) # 训练最佳模型并返回 lr, md, mf, ne = xopt clf = GradientBoostingClassifier( learning_rate=lr, max_depth=int(md), max_features=int(mf), n_estimators=int(ne) ) clf.fit(X, y) return clf # 加载数据并训练模型 from sklearn.datasets import load_iris X, y = load_iris(return_X_y=True) model = pso_gbdt(X, y) # 预测新数据 y_pred = model.predict(X) ``` 在这个示例代码中,我们定义了一个 `pso_gbdt` 函数来创建 PSO-GBDT 模型。该函数接受输入数据和目标变量,并返回训练好的最佳模型。在函数内部,我们首先定义了一个 `objective_function` 函数,用于计算模型的误差。然后,我们定义了四个参数的范围,即学习率、最大深度、最大特征数和迭代次数。最后,我们使用 PySwarm 库中的 `pso` 函数运行 PSO 算法,得到最佳参数。然后,我们训练最佳模型并返回。 在这个示例代码中,我们使用鸢尾花数据集作为训练数据,使用 PSO-GBDT 算法进行多分类。你可以根据自己的需要修改代码,并使用适当的数据集来拟合模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值