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

news2024/11/28 8:34:53

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.coloradmin.cn/o/843837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++经典排序算法详解

目录 一、选择排序 二、冒泡排序 三、插入排序 一、选择排序 选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存…

Linux命令200例:join将两个文件按照指定的键连接起来分析

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…

十二、ESP32控制步进电机

1. 运行效果 2. 步进电机 最大特点:能够控制旋转一定的角度 3. 步进电机原理

P1433 吃奶酪(状态压缩dp)(内附封面)

吃奶酪 题目描述 房间里放着 n n n 块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 ( 0 , 0 ) (0,0) (0,0) 点处。 输入格式 第一行有一个整数,表示奶酪的数量 n n n。 第 2 2 2 到第 ( n 1 ) (n 1) (n1) 行…

研发工程师玩转Kubernetes——emptyDir

kubernets可以通过emptyDir实现在同一Pod的不同容器间共享文件系统。 正如它的名字,当Pod被创建时,emptyDir卷会被创建,这个时候它是一个空的文件夹;当Pod被删除时,emptyDir卷也会被永久删除。 同一Pod上不同容器之间…

报错Error: error:0308010C:digital envelope routines::unsupported

Error: error:0308010C:digital envelope routines::unsupported 解决: 在原有脚本前加: SET NODE_OPTIONS--openssl-legacy-provider && 原来: 加后:

常规VUE项目优化实践,跟着做就对了!

总结: 主要优化方式: imagemin优化打包大小(96M->50M),但是以打包速度为代价,通过在构建过程中压缩图片来实现,可根据需求开启。字体压缩:目前项目内引用为思源字体&#xff0c…

Latex安装与环境配置(TeXlive、TeXstudio与VS code的安装)编译器+编辑器与学习应用

TeXlive 配置Tex排版系统需要安装编译器+编辑器。TeX 的源代码是后缀为 .tex 的纯文本文件。使用任意纯文本编辑器,都可以修改 .tex 文件:包括 Windows 自带的记事本程序,也包括专为 TeX 设计的编辑器(TeXworks, TeXmaker, TeXstudio, WinEdt 等),还包括一些通用的文本编…

对于git功能的探索与研究

读前提示 注意: 本文只是面向初学者或者之前并未接触过git而想学习如何初步使用git的读者,如果您很擅长使用git,并善于维护远程仓库,那么不建议您看此篇文章,这会浪费您的时间。 当然,这篇文章还是能很好地…

配置页面的路由

1.下载router npm i router 2.注册路由 文件路径 :src/router/index.js import Vue from "vue"; import VueRouter from "vue-router"; Vue.use(VueRouter); import Home from "../components/home.vue"; import Main from …

摄像机终端IP地址白名单配置流程

海康摄像头配置白名单流程 1.登录海康摄像机前端 2.进入配置-系统-安全管理-IP地址过滤 3.IP地址过滤方式选择“允许” 4.点击添加按钮输入对应的IP地址或者IP网段 5.最后勾选启用IP地址过滤,然后保存 大华摄像头配置白名单流程 1.登录大华摄像机前端 2.进入设…

openGauss学习笔记-33 openGauss 高级数据管理-视图

文章目录 openGauss学习笔记-33 openGauss 高级数据管理-视图33.1 语法格式33.2 参数说明33.3 示例 openGauss学习笔记-33 openGauss 高级数据管理-视图 视图与基本表不同,是一个虚拟的表。数据库中仅存放视图的定义,而不存放视图对应的数据&#xff0c…

【C高级】Day4 shell脚本 排序

1. 整理思维导图 2. 写一个函数&#xff0c;获取用户的uid和gid并使用变量接收 #!/bin/bash function getid() {uidid -ugidid -g }getid echo "uid$uid" echo "gid$gid"3. 整理冒泡排序、选择排序和快速排序的代码 #include <myhead.h>void Inp…

智慧物流园区整体架构方案【46页PPT】

导读&#xff1a;原文《智慧物流园区整体架构方案【46页PPT】》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取…

Python-面向对象:面向对象、成员方法 、类和对象、构造方法、魔术方法、封装、继承、类型注解、多态(抽象类(接口))

版本说明 当前版本号[20230806]。 版本修改说明20230806初版 目录 文章目录 版本说明目录知识总览图面向对象初识对象生活中数据的组织程序中数据的组织使用对象组织数据 成员方法类的定义和使用成员变量和成员方法成员方法的定义语法注意事项 类和对象现实世界的事物和类使…

Netty:ChannelInitializer添加到ChannelPipeline完成任务以后会自动删除自己

说明 io.netty.channel.ChannelInitializer是一个特殊的ChannelInboundHandler。它的主要作用是向 Channel对应的ChannelPipeline中增加ChannelHandler。执行完ChannelInitializer的initChannel(C ch)函数以后&#xff0c;ChannelInitializer就会从ChannelPipeline自动删除自己…

sklearn中使用决策树

1.示例 criterion可以是信息熵&#xff0c;entropy&#xff0c;可以是基尼系数gini # -*-coding:utf-8-*- from sklearn import tree from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split wineload_wine()# print ( wine.feature_…

Vue3 第四节 自定义hook函数以及组合式API

1.自定义hook函数 2.toRef和toRefs 3.shallowRef和shallowReactive 4.readonly和shallowReadonly 5.toRaw和markRaw 6.customref 一.自定义hook函数 ① 本质是一个函数&#xff0c;把setup函数中使用的Composition API 进行了封装,类似于vue2.x中的mixin 自定义hook函数…

Maven介绍-下载-安装-使用-基础知识

Maven介绍-下载-安装-使用-基础知识 Maven的进阶高级用法可查看这篇文章&#xff1a; Maven分模块-继承-聚合-私服的高级用法 文章目录 Maven介绍-下载-安装-使用-基础知识01. Maven1.1 初识Maven1.1.1 什么是Maven1.1.2 Maven的作用 02. Maven概述2.1 Maven介绍2.2 Maven模型…

F5 LTM 知识点和实验 12-使用规则和本地流量策略定制应用程序交付

第十一章:iapp(忽略) 第十二章:使用规则和本地流量策略定制应用程序交付 用最简单的术语来说,iRule是在网络流量通过BIGIP系统时对其执行的脚本。其思想非常简单:规则使您能够编写简单的网络感知代码片段,这些代码以各种方式影响您的网络流量。无论您是希望以BIG-IP内置…