邵阳公司网站建设网站制作哪些分类

张小明 2026/1/19 22:02:16
邵阳公司网站建设,网站制作哪些分类,南京网站设计机构,邯郸网站建设哪能做一、概述在前文我们已经详细说明了SSR单尺度低光图像增强算法了#xff0c;作为一种传统的低光图像增强算法#xff0c;SSR只能作为理论学习的算法#xff0c;帮助我们了解视网膜算法#xff0c;学习颜色恒常性理论知识#xff0c;SSR是不足以算真正的图像增强算法的…一、概述在前文我们已经详细说明了SSR单尺度低光图像增强算法了作为一种传统的低光图像增强算法SSR只能作为理论学习的算法帮助我们了解视网膜算法学习颜色恒常性理论知识SSR是不足以算真正的图像增强算法的MSR和MSRCP才是实际应用中真正使用到的低光图像增强算法也就是我们常说的Retinex算法但其实只要前面学习过SSR的这一块就比较简单了MSR多尺度低光图像增强算法顾名思义就是多个 SSR 的加权和SSR只有一个如果选的比较大虽然能够增强局部对比度但也会导致噪声增大边缘锐化。如果选的比较小全局亮度比较好但局部细节会有所缺失MSR正是通过使用多个进行加权求和MSR 是多尺度光照补偿的稳健融合。那MSRCP是什么呢其实他和MSR差不多但MSRCP 在 Retinex 增强亮度和对比度的同时有效保持颜色比例避免颜色失真具有良好的稳定性和视觉一致性。下面我将具体说明三种算法。二、单尺度SSR低光图像增强算法前文已经写过了这里不多说了SSR其实就是通过高斯模糊来估计光照分量然后通过减去光照分量得到反射分量而反射分量正是模拟我们人眼视网膜所看到的图像具有颜色恒常性不会随光照的变换而改变它的颜色。具体代码如下#include opencv2/opencv.hpp #include iostream // SSR 单尺度 Retinex cv::Mat SSR(const cv::Mat srcGray, double sigma) { CV_Assert(srcGray.channels() 1); // 1. 转 double cv::Mat img; srcGray.convertTo(img, CV_64F); // 2. 高斯模糊估计光照 cv::Mat blur; int ksize int(6 * sigma 1) | 1; // 保证为奇数 cv::GaussianBlur(img, blur, cv::Size(ksize, ksize), sigma); // 3. Retinex 核心公式 cv::Mat retinex; cv::log(img 1.0, img); cv::log(blur 1.0, blur); retinex img - blur; // 4. 动态范围压缩归一化 double minVal, maxVal; cv::minMaxLoc(retinex, minVal, maxVal); retinex (retinex - minVal) * 255.0 / (maxVal - minVal 1e-6); // 5. 转回 8-bit cv::Mat dst; retinex.convertTo(dst, CV_8UC1); return dst; }三、MSRCP彩色图像增强恢复算法MSR其实就是在SSR的基础上进行多个进行加权求和而MSRCP其实就是做了一个图像恢复这里我们提供一个代码代码如下cv::Mat MSRCP(const cv::Mat image, std::vectordouble sigmas, std::vectordouble weights, int kSize) { CV_Assert(sigmas.size() weights.size()); if (image.channels() 1) { cv::Mat msr cv::Mat::zeros(image.size(), CV_64F); for (size_t i 0; i sigmas.size(); i) msr weights[i] * SSR(image, sigmas[i], kSize); return postProcess(msr, 0.01); } // 彩色图 std::vectorcv::Mat channels; cv::split(image, channels); cv::Mat avg (channels[0] channels[1] channels[2]) / 3.0; avg.convertTo(avg, CV_64F); cv::Mat Lmsr cv::Mat::zeros(avg.size(), CV_64F); for (size_t i 0; i sigmas.size(); i) Lmsr weights[i] * SSR(avg, sigmas[i], kSize); Lmsr postProcess(Lmsr, 0.01); Lmsr.convertTo(Lmsr, CV_64F); std::vectorcv::Mat out(3); for (int c 0; c 3; c) { cv::Mat ch; channels[c].convertTo(ch, CV_64F); out[c] ch.mul(Lmsr) / (avg 1e-6); out[c].setTo(0, out[c] 0); out[c].setTo(255, out[c] 255); out[c].convertTo(out[c], CV_8UC1); } cv::Mat dst; cv::merge(out, dst); return dst; }五、后处理这里我们不采用和SSR算法一样直接使用normalize归一化到[0,255]之间而是采用过程化的后处理方式因为Retinex算法得到的是对数域下的反射分量数值分布通常长尾、非对称、含强噪声和极端亮暗点。如果直接用cv::normalize(min-max)最大值和最小值往往由极少数噪声像素或高光点决定导致大部分像素被压缩到很窄的灰度范围里画面发灰、对比度不足。我们采用先按百分位裁掉两端的异常值cut再在“可信区间”内做线性拉伸相当于一种鲁棒的动态范围压缩这是 Retinex 系列论文和工程实现中最常见、最稳定的做法比直接 normalize 更符合人眼感知。代码如下// 后处理 cv::Mat postProcess(const cv::Mat channel, double cut) { cv::Mat result channel.clone(); cv::Mat flat result.reshape(1, 1).clone(); cv::sort(flat, flat, cv::SORT_ASCENDING); int total flat.cols; int low_idx std::min(std::max(0, int(total * cut)), total - 1); int high_idx std::min(std::max(0, int(total * (1 - cut))), total - 1); double lowVal flat.atdouble(0, low_idx); double highVal flat.atdouble(0, high_idx); double scale 255.0 / (highVal - lowVal 1e-6); // 归一化到255上 result (result - lowVal) * scale; result.setTo(0, result 0); result.setTo(255, result 255); result.convertTo(result, CV_8UC1); return result; }六、测试
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

易语言做网站视频wordpress 前台写文章

在使用 Java 程序时,遇到 FATAL ERROR: processing of -javaagent failed 这样的错误通常意味着在尝试使用 -javaagent 参数来加载一个 Java Agent 时发生了问题。-javaagent 参数用于在 JVM 启动时加载一个 Java Agent,这种 Agent 可以用来监视、诊断或…

张小明 2026/1/15 14:58:10 网站建设

同一个域名两个网站百度做的网站 后台管理怎么进入

GPT-SoVITS语音克隆部署与使用指南 在虚拟主播、有声书生成和个性化语音助手日益普及的今天,如何用极少量语音数据快速克隆出高度拟真的音色,已成为AI音频领域最热门的技术挑战之一。GPT-SoVITS 正是在这一背景下脱颖而出的开源项目——它不仅能用一分钟…

张小明 2026/1/13 15:33:24 网站建设

京东网站建设评估寻亲网站开发设计文档

第一章:Open-AutoGLM隐私数据访问审计在构建和部署大型语言模型系统时,确保用户隐私数据的安全与合规访问是核心挑战之一。Open-AutoGLM 作为一款开源的自动推理增强型语言模型框架,集成了细粒度的数据访问控制机制,支持对敏感数据…

张小明 2025/12/25 9:17:03 网站建设

网站后台信息发布这样做国内免费服务器地址

嵌入式系统开发:BusyBox 与系统设计全解析 一、BusyBox 简介 BusyBox 具有出色的代码与功能比,并且高度可配置。这意味着你可以创建一个仅包含所需小程序(applet)的构建,从而控制其大小和资源消耗。不过,BusyBox 缺少一些完整工具的功能,这可能导致某些使用完整工具的…

张小明 2025/12/29 14:42:54 网站建设

怎么在各大网站做产品推广制作中秋网页素材

量子物理中的势能问题解析 1. 势能阶跃 1.1 氦原子散射数据 在研究氦原子弹性散射数据时,发现纵坐标代表氦原子散射的概率。在能量 (E = 0.1 meV) 附近存在一个最小值,即 Ramsauer 最小值,这对应着透射系数的最大值。这一现象代表了一个氦原子对另一个氦原子所呈现的势垒…

张小明 2026/1/7 10:18:11 网站建设

娄底网站建设wyo8wordpress sensica

1 重新理解TDD:超越技术工具的方法论革命 当我们谈论测试驱动开发时,许多软件测试从业者往往会陷入一个认知误区——将TDD简单视为一种测试技术或工具。实际上,TDD本质上是一种软件开发方法论,其核心价值在于通过测试来驱动设计演…

张小明 2025/12/25 9:17:07 网站建设