41.利用matlab 平衡方程用于图像(matlab程序)

1.简述

      

白平衡
白平衡的英文为White Balance,其基本概念是“不管在任何光源下,都能将白色物体还原为白色”,对在特定光源下拍摄时出现的偏色现象,通过加强对应的补色来进行补偿。

所谓的白平衡是通过对白色被摄物的颜色还原(产生纯白的色彩效果),进而达到其他物体色彩准确还原的一种数字图像色彩处理的计算方法。(源自百度百科)

灰度世界算法
灰度世界理论:认为任何一幅图像, 当有足够的色彩变化时, 其R, G, B分量均值会趋于平衡(即 RGB三个数值相等, 也就是说应当是黑白灰类型的颜色)。这个理论在全局白平衡中得到⼴泛应用, 特点是能够利用更多的图像信息来做判断, 但在面对⾊色彩较为单一的图像时就显得有些乏力了。

灰度世界算法:根据灰度世界理论,将原始图的RGB均值分别调整到R= G = B即可。不完美的地方就是这个算法对颜色不丰富的图像敏感程度一般,处理起来效果也就不会很理想,局限性很大。
 

2.代码

%%  学习目标:平衡方程用于图像
function anisodiffusionsimple()
a = imread('trui.tif');
a = im2double(a);
g1 =a;
g2 =a;
stepsize1=.2;
stepsize2=.1;
nosteps=200;
verbose=1;
if verbose
    figure(verbose);
    subplot(2,3,1); imshow(g1); title('Original Image'); drawnow;
end
h=waitbar(0,'Now is doing Diffusion');
for i=1:nosteps
    laplaceg1=snldStep1(g1);
    g1 = g1 +stepsize1 * laplaceg1;
    laplaceg2=snldStep2(g2);
    g2 = g2 +stepsize2 * laplaceg2;
    waitbar(i/nosteps,h);
    if verbose
        figure(verbose);
        subplot(2,3,2); imshow(uint8(255*(laplaceg1-min(laplaceg1(:)))/(max(laplaceg1(:))-min(laplaceg1(:)))));
        %subplot(2,2,2); imshow(uint8(255*(laplaceg-min(laplaceg(:)))/(max(laplaceg(:))-min(laplaceg(:)))));%归一化?
        title('Laplace term')
        subplot(2,3,3); imshow(g1);
        title('Anisotropic Diffusion'); drawnow;
        subplot(2,3,5); imshow(uint8(255*(laplaceg2-min(laplaceg2(:)))/(max(laplaceg2(:))-min(laplaceg2(:)))));
        %subplot(2,2,2); imshow(uint8(255*(laplaceg-min(laplaceg(:)))/(max(laplaceg(:))-min(laplaceg(:)))));%归一化?
        title('Laplace term')
        subplot(2,3,6); imshow(g2);
        title('Isotropic Diffusion'); drawnow;
    end
        waitbar(i/nosteps,h);
end
close(h);

function r = snldStep1( L )
% Discrete numerical scheme of dL/dt for scalar diffusion
N = size(L, 1);
M = size(L, 2);
lamda=.008;
% Set delta_x,delta_y=2,so we can set delta_x/2=delta_y/2=1
Lpc = translateImage( L, 1, 0 );
Lmc = translateImage( L, -1, 0 );
Lcp = translateImage( L, 0, 1 );
Lcm = translateImage( L, 0, -1 );
Lppc = translateImage( L, 2, 0 );
Lmmc = translateImage( L, -2, 0 );
Lcpp = translateImage( L, 0, 2 );
Lcmm = translateImage( L, 0, -2 );
Lap_i = (Lpc+Lcp)-2*L; % Laplace_I
d =abs( Lap_i/lamda );
e=-d.*d;
C = exp(e);
Cpc = translateImage( C, 1, 0 );
Cmc = translateImage( C, -1, 0 );
Ccp = translateImage( C, 0, 1 );
Ccm = translateImage( C, 0, -1);
r = ( 1/4*(Cpc.*( Lppc - L )-Cmc.*( L - Lmmc ))+1/4*(Ccp.*( Lcpp - L )-Ccm.*( L - Lcmm )) );

function k = snldStep2( L )
% Discrete numerical scheme of dL/dt for scalar diffusion
N = size(L, 1);
M = size(L, 2);
Lpc = translateImage( L, 1, 0 );
Lmc = translateImage( L, -1, 0 );
Lcp = translateImage( L, 0, 1 );
Lcm = translateImage( L, 0, -1 );
k = ( (Lpc-2*L+Lmc)+ (Lcp-2*L+Lcm) );
 

3.运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/78520.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv-34 图像平滑处理-双边滤波cv2.bilateralFilter()

双边滤波(BilateralFiltering)是一种图像处理滤波技术,用于平滑图像并同时保留边缘信息。与其他传统的线性滤波方法不同,双边滤波在考虑像素之间的空间距离之外,还考虑了像素之间的灰度值相似性。这使得双边滤波能够有…

【C语言进阶】指针的高级应用(下)

文章目录 一、指针数组与数组指针1.1 指针数组与数组指针的表达式 二、函数指针2.1 函数指针的书写方式 三、二重指针与一重指针3.1 二重指针的本质3.2 二重指针的用法3.3 二重指针与数组指针 总结 一、指针数组与数组指针 (1)指针数组的实质是一个数组,这个数组中存…

【python】使用Selenium和Chrome WebDriver来获取 【腾讯云 Cloud Studio 实战训练营】中的文章信息

文章目录 前言导入依赖库设置ChromeDriver的路径创建Chrome WebDriver对象打开网页找到结果元素创建一个空列表用于存储数据遍历结果元素并提取数据提取标题、作者、发布时间等信息判断是否为目标文章提取目标文章的描述、阅读数量、点赞数量、评论数量等信息将提取的数据存储为…

IntelliJ IDEA 2023.2 最新变化

IntelliJ IDEA 2023.2 引入 AI Assistant,通过一组由 AI 提供支持的功能助力开发。 升级的 IntelliJ 分析器现在提供编辑器内提示,使分析进程更加直观详尽。 此版本还包括有助于简化开发工作流的 GitLab 集成,以及其他多项值得关注的更新和改…

在政策+市场双轮驱动下,深眸科技助力机器视觉行业走向成熟

近年来,随着人工智能发展的不断提速,机器视觉作为其重要的前沿分支,凭借着机器代替人眼来做测量和判断的能力,广泛应用于工业领域的制造生产环节,用来保证产品质量、控制生产流程、感知环境等,并迸发出强劲…

基于新浪微博海量用户行为数据、博文数据数据分析:包括综合指数、移动指数、PC指数三个指数

基于新浪微博海量用户行为数据、博文数据数据分析:包括综合指数、移动指数、PC指数三个指数 项目介绍 微指数是基于海量用户行为数据、博文数据,采用科学计算方法统计得出的反映不同事件领域发展状况的指数产品。微指数对于收录的关键词,在指…

用Log4j 2记录日志

说明 maven工程中增加对Log4j 2的依赖 下面代码示例的maven工程中的pom.xml文件中需要增加对Log4j 2的依赖&#xff1a; <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.20.0&…

【C语言学习】整数的输入输出、八进制和十六进制

一、整数的输入输出 只有两种形式&#xff1a;int或long long %d:int %u:unsigned %ld:long long %lu:unsigned long long 二、八进制和十六进制 以0开头就是八进制&#xff0c;以0x开头就是十六进制。 无论是八进制还是十六进制只是如何将数字表达为字符串&#xff0c;但计…

UML-构件图

目录 1.概述 2.构件的类型 3.构件和类 4.构件图 1.概述 构件图主要用于描述各种软件之间的依赖关系&#xff0c;例如&#xff0c;可执行文件和源文件之间的依赖关系&#xff0c;所设计的系统中的构件的表示法及这些构件之间的关系构成了构件图 构件图从软件架构的角度来描述…

Vue2 第二十节 vue-router (四)

1.全局前置路由和后置路由 2.独享路由守卫 3.组件内路由守卫 4.路由器的两种工作模式 路由 作用&#xff1a;对路由进行权限控制 分类&#xff1a;全局守卫&#xff0c;独享守卫&#xff0c;组件内守卫 一.全局前置路由和后置路由 ① 前置路由守卫&#xff1a;每次路由…

《每天5分钟玩转kubernetes》读书笔记

笔记 概念 Pod是脆弱的&#xff0c;但应用是健壮的。 kubelet运行在Cluster所有节点上&#xff0c;负责启动Pod和容器。kubeadm用于初始化Cluster。kubectl是k8s命令行工具。通过kubectl可以部署和管理应用&#xff0c;查看各种资源&#xff0c;创建、删除和更新各种组件。 …

python使用虚拟环境安装第三方模块和运行python脚本

1、在用户家目录下创建一个名为env38的虚拟环境 python3 -m venv env38 创建虚拟环境env38后的目录 2、 激活虚拟环境 source ~/env38/bin/activate 3、安装pyqt5 pip install pyqt5 4、写一个简单的python脚本 import sys print(sys.path)# 如果执行成功&#xff0c;没有…

Unity Shader编辑器工具类ShaderUtil 常用函数和用法

Unity Shader编辑器工具类ShaderUtil 常用函数和用法 Unity的Shader编辑器工具类ShaderUtil提供了一系列函数&#xff0c;用于编译、导入和管理着色器。本文将介绍ShaderUtil类中的常用函数和用法。 编译和导入函数 CompileShader 函数签名&#xff1a;public static bool C…

CAD随机球体颗粒过渡区3D插件

插件介绍 CAD随机球体颗粒&过渡区3D插件可用于在AutoCAD软件内生成随机分布的球体及球体外侧过渡区部件&#xff0c;适用于科研绘图、有限元建模如混凝土细观、颗粒增强复合材料、随机三维骨料及过渡区等方面的应用。 插件可指定的参数有模型的长、宽、高&#xff1b;球…

如何将 dubbo filter 拦截器原理运用到日志拦截器中?

业务背景 我们希望可以在使用日志拦截器时&#xff0c;定义属于自己的拦截器方法。 实现的方式有很多种&#xff0c;我们分别来看一下。 拓展阅读 java 注解结合 spring aop 实现自动输出日志 java 注解结合 spring aop 实现日志traceId唯一标识 java 注解结合 spring ao…

概念解析 | PointNet概述

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次解析的概念是:点云深度学习及PointNet论文概述 参考论文:Qi C R, Su H, Mo K, et al. Pointnet: Deep learning on point sets for 3d classification and segmentation[C]//Proceedings of …

yum出现Could not retrieve mirrorlist解决方法

Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release6&archi386&repoos error was 14: PYCURL ERROR 6 - “Couldn’t resolve host ‘mirrorlist.centos.org…

Linux进程(二)

文章目录 进程&#xff08;二&#xff09;Linux的进程状态R &#xff08;running&#xff09;运行态S &#xff08;sleeping&#xff09;阻塞状态D &#xff08;disk sleep&#xff09;深度睡眠T&#xff08;stopped&#xff09;状态X&#xff08;dead&#xff09;状态Z&#x…

认识 spring AOP (面向切面编程) - springboot

前言 本篇介绍什么是spring AOP, AOP的优点&#xff0c;使用场景&#xff0c;spring AOP的组成&#xff0c;简单实现AOP 并 了解它的通知&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. 什么是s…

快速上手字符串函数

文章目录 前言一、求字符串的长度strlen函数strlen函数学习使用strlen函数模拟实现strlen函数模拟实现方法1&#xff1a;计数器法strlen函数模拟实现方法2&#xff1a;指针减指针法strlen函数模拟实现方法3&#xff1a;递归方法 二、字符串的拷贝&#xff0c;拼接和比较strcpy函…