图像增强:多尺度的图像细节提升(multi-scale detail boosting)实现方法

       看到一篇博客介绍基于多尺度的图像的细节提升算法,其参考论文《Dark image enhancement based onpairwise target contrast and multi-scale detail boosting》,下图是该论文的核心算法过程。然后自己在Matlab和OpenCV实现了该算法,最终实现的效果还是不错的,可以增强图像的细节部分。
       论文的核心算法过程:


  论文的核心思想类似于Retinex,使用了三个尺度的高斯模糊,再和原图做减法,获得不同程度的细节信息,然后通过一定的组合方式把这些细节信息融合到原图中,从而得到加强原图信息的能力:请参考这一篇博客介绍:http://www.cnblogs.com/Imageshop/p/7895008.html,该博客给出了SSE的实现过程。
算法实现很容易,下面,我给出本人的OpenCV和Matlab实现方法:
OpenCV实现方法:
#include <iostream>
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;cv::Mat multiScaleSharpen(cv::Mat Src, int Radius)
{int rows = Src.rows;int cols = Src.cols;int cha = Src.channels();cv::Mat B1, B2, B3;GaussianBlur(Src, B1, Size(Radius, Radius), 1.0, 1.0);//高斯模糊GaussianBlur(Src, B2, Size(Radius*2-1, Radius*2-1), 2.0, 2.0);GaussianBlur(Src, B3, Size(Radius*4-1, Radius*4-1), 4.0, 4.0);double w1 = 0.5;double w2 = 0.5;double w3 = 0.25;cv::Mat dest = cv::Mat::zeros(Src.size(), Src.type());for (size_t i = 0; i < rows; i++){uchar* src_ptr = Src.ptr<uchar>(i);uchar* dest_ptr = dest.ptr<uchar>(i);uchar* B1_ptr = B1.ptr<uchar>(i);uchar* B2_ptr = B2.ptr<uchar>(i);uchar* B3_ptr = B3.ptr<uchar>(i);for (size_t j = 0; j < cols; j++){for (size_t c = 0; c < cha; c++){int  D1 = src_ptr[3*j+c] - B1_ptr[3 * j + c];int  D2 = B1_ptr[3 * j + c] - B2_ptr[3 * j + c];int  D3 = B2_ptr[3 * j + c] - B3_ptr[3 * j + c];int  sign = (D1 > 0) ? 1 : -1;dest_ptr[3 * j + c] = saturate_cast<uchar>((1 - w1*sign)*D1 - w2*D2 + w3*D3 + src_ptr[3 * j + c]);}}}return dest;
}int main(int argc)
{Mat src = imread("image\\test.jpg");cv::imshow("src", src);cvWaitKey(100);cv::Mat dest=multiScaleSharpen(src,5);cv::imshow("dest", dest);cvWaitKey(0);return 0;
}

Matlab实现方法:

function [ dest ] = multiScaleSharpen( src, Radius)
%%
sigma1 = 1.0;
sigma2 = 2.0;
sigma3 = 4.0;
H1 = fspecial('gaussian', [Radius,Radius], sigma1);
H2 = fspecial('gaussian', [Radius*2-1,Radius*2-1], sigma2);
H3 = fspecial('gaussian', [Radius*4-1,Radius*4-1], sigma3);
B1= imfilter(src, H1, 'replicate');
B2= imfilter(src, H2, 'replicate');
B3= imfilter(src, H3, 'replicate');
% figure;imshow(B3), title('B3');D1=src-B1;
D2=B1-B2;
D3=B2-B3;
%%
w1=0.5;
w2=0.5;
w3=0.25;
dest=(1-w1.*sign(D1)).*D1+w2*D2+w3*D3+src;
% figure;imshow(dest), title('dest');
end

Matlab调用方法:

src=imread('image\test.jpg');
figure;imshow(src), title('原图');
Radius=5;
[ dest ] = multiScaleSharpen( src, Radius);
figure;imshow(dest), title('dest');
效果图:

  

图像增强:多尺度的图像细节提升(multi-scale detail boosting)实现方法相关推荐

  1. 多尺度的图像细节提升

    多尺度的图像细节提升 论文的全名是DARK IMAGE ENHANCEMENT BASED ON PAIRWISE TARGET CONTRAST AND MULTI-SCALE DETAIL BOO ...

  2. 双尺度与多尺度图像细节提升

    双尺度与多尺度图像细节提升 双尺度图像分解细节提升 第一次看到双尺度图像分解细节提升的思想是来自2013的一篇论文(Image Fusion with Guided Filtering )中的一小节, ...

  3. 《MA‑CRNN: a multi‑scale attention CRNN for Chinese text line recognition in natural scenes》论文阅读

    参考博文: CRNN的一个变种,可以读一读,看看相对于CRNN来说有什么变化?以及为什么? 文章目录 make decision step1:读摘要 step2:读Introduction step3 ...

  4. 毕设日志——增加多尺度对应的不一样scale的RPN网络

    4.25 错误 4.27 修改anchor不同的RPN,即conv5-3和conv4-3融合 本来想运行一个epoch,结果运行成下面的没有指定epoch个数的: CUDA_VISIBLE_DEVIC ...

  5. 效率提升3倍的Paper阅读方法

    视频链接:https://www.bilibili.com/video/BV1Q4411R7cY 效率提升3倍的Paper阅读方法 1 为什么要读论文 构建知识体系 紧跟前沿技术 培养科研逻辑 写论文 ...

  6. 提升PHP性能的21种方法

    提升PHP性能的21种方法. 1.用单引号来包含字符串要比双引号来包含字符串更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会. 2.如果能将类的方法定义成static,就尽量定义成s ...

  7. 其中一个页签慢_渭南提升一个大专学历的有效方法

    渭南提升一个大专学历的有效方法,宏德教育,目前已形成以高等学历教育为特色王牌,职称考评.企业内训为辅助的强力优势品牌. 渭南提升一个大专学历的有效方法, 获得发明专利或实用新型专利,且已实施取得效益. ...

  8. 莱斯大学找到了多被提升3G/4G网络性能的方法

    为什么80%的码农都做不了架构师?>>> Rice University has figured out how to double capacity on 3G/4G networ ...

  9. 【Android优化篇】提升Activity加载速度的方法

    文章转自:http://www.jianshu.com/p/2007ca0290d3 作者: CoderFan 前言 这个也是我面试遇到的问题,当时只回答了一种情况,异步加载数据,没想到别的方式,回来 ...

最新文章

  1. Java SE和Java EE应用的性能调优
  2. ssh登录一段时间后断开的解决方案
  3. CSS3-transition,过渡实例
  4. WebStorm2018配置nodejs
  5. (70)内核重载 xp sp3 x86 单核
  6. 社区计算机义务维修策划书,计协义务维修策划书(模板).doc
  7. 为什么嫁人就选程序员!
  8. java 方法 示例_Java语言环境getISOLanguages()方法与示例
  9. python 3d大数据可视化_基于Python的数据可视化库pyecharts介绍
  10. Linux学习 - awk使用
  11. NOI Linux2.0使用系列视频集
  12. c语言程序下三子棋,C语言实现三子棋游戏(初级版)
  13. tpch测试mysql_MySQL数据库之MySQL-tpch 测试工具简要手册
  14. perl 教程网站 记录
  15. 搜狗推广管家 v8.3
  16. html5绘制节点链接,利用HTML5实现网状结构节点动画特效
  17. JS - 阿里云 OSS 文件下载通用办法(支持跨域)
  18. 微信朋友圈背景图片尺寸
  19. 为什么要购买阿里云服务器?云服务器用途有哪些?
  20. 开启xmp1还是2_家用门窗常见开启方式及优势

热门文章

  1. ACM PKU1703 Find them, Catch them
  2. 多文档版的的正则表达式工具
  3. 访百度奥运logo设计师李兴钢:虚实之间最美的呈现
  4. 第二次Soring冲刺计划第二天(个人)
  5. web之用FileUpload上传文件
  6. django 快速实现注册(四)
  7. chmod 命令详解
  8. 毕设开发总结-3D游戏框架及网络对战游戏的开发(1)
  9. WebLogic Platform 8.1 SP3 简体中文版发行
  10. Bash中的文件名匹配