PS 图像调整— — gain and bias

本文介绍了一种使用MATLAB实现的图像增强算法,通过调整图像的增益和偏置来改善图像质量。该方法首先设置增益和偏置值,然后通过对图像像素进行特定数学运算以达到增强效果。
    clc;
    clear all;
    close all;

    addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm');

    Image=imread('4.jpg');
    Image=double(Image)/255;

    % imshow(Image)
    % set the gain value 0-1
    % set the bias value 0-1

    gain=0.5;
    bias=0.25;

    % adjust the gain
    p=log(1-gain)/log(0.5);

    sz=size(Image);

    T1=Image(:);

    T1(T1<0.001)=0;
    T1(T1>0.999)=1.0;

    ind_1=find(T1>0.001);
    ind_2=ind_1(find(T1(ind_1)<0.5));
    ind_3=find(T1>0.5);
    ind_4=ind_3(find(T1(ind_3)<0.999));

    T1(ind_2)=(2*T1(ind_2)).^p/2;
    T1(ind_4)=1-(2*(1-T1(ind_4))).^p/2;

    cc=(1.0/gain-2)*(1.0-2*T1);

    ind_5=find(T1<0.5);
    ind_6=find(T1>0.5);

    T1(ind_5)=T1(ind_5)./(cc(ind_5)+1);
    T1(ind_6)=(cc(ind_6)-T1(ind_6))./(cc(ind_6)-1.0);

    % adjust the bias

    T1=T1.^(log(bias)/log(0.5));
    T1=T1./((1.0/bias-2)*(1.0-T1)+1);

    Image_new=reshape(T1, [sz(1) sz(2) sz(3)]);

    figure;
    imshow(Image_new);
    imwrite(Image_new, 'out.jpg');

原图:
这里写图片描述

效果图:
这里写图片描述

这里写图片描述

在Landsat系列卫星数据中,增益因子和偏置因子通常以特定的字段名出现在元数据文件(通常是文本格式的`_MTL.txt`文件)中。这些参数用于将原始DN值转换为具有物理意义的量,例如辐射亮度或地表反射率。 对于Landsat 7和Landsat 8等传感器,增益因子和偏置因子分别对应于每个波段,并以类似如下的方式定义: ``` RADIANCE_MULT_BAND_1 = 0.01 RADIANCE_ADD_BAND_1 = -1.5 ``` 上述字段表示第1波段的增益因子为`0.01`,偏置因子为`-1.5`。这种命名方式遵循了标准的命名规则,即`RADIANCE_MULT_BAND_X`和`RADIANCE_ADD_BAND_X`,其中`X`代表波段编号[^3]。 ### 数据处理中的应用示例 以下是一个Python代码片段,展示了如何从元数据文件中提取增益因子和偏置因子,并使用它们将DN值转换为辐射亮度: ```python import re def read_gain_bias_from_metadata(metadata_path, band_number): """ 从Landsat元数据文件中读取增益因子和偏置因子。 参数: metadata_path (str): 元数据文件路径 band_number (int): 波段编号 返回: tuple: (gain, bias) """ gain_key = f'RADIANCE_MULT_BAND_{band_number}' bias_key = f'RADIANCE_ADD_BAND_{band_number}' gain = None bias = None with open(metadata_path, 'r') as file: for line in file: if gain_key in line: gain = float(re.split('=', line)[1].strip()) elif bias_key in line: bias = float(re.split('=', line)[1].strip()) return gain, bias def convert_dn_to_radiance(dn_value, gain, bias): """ 将DN值转换为辐射亮度。 参数: dn_value (int): 像素点的DN值 gain (float): 增益因子 bias (float): 偏置因子 返回: float: 辐射亮度 """ radiance = (dn_value * gain) + bias return radiance ``` 通过上述函数,可以轻松地从元数据文件中提取增益因子和偏置因子,并对遥感影像进行物理量转换。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值