Matlab图像处理 您所在的位置:网站首页 图像亮度调节matlab Matlab图像处理

Matlab图像处理

2024-01-11 12:11| 来源: 网络整理| 查看: 265

Github主页:https://linxid.github.io/知乎:https://zhuanlan.zhihu.com/p/35775368CSDN:https://blog.csdn.net/linxid/article/details/79973258

亮度(灰度)变换是一种非常重要的空间域内处理图像的方法,主要介绍几个亮度变换函数,以及应用。

函数简介 1.imadjust

该函数用来调整亮度,可以映射加权至更高的或更低输出值。

imadjust是亮度变换的基本IPT工具,语法为: g = imadjust(f,[low_ in high_ in],[low_ out, high_out],gamma);

f:输入图像; low_in,high_in,low_out,high_out:将low_ in,至high _ in之间的灰度值映射到low _ out,high_ out。low_ in以下的值和high _ in以上的值被剪切掉。空矩阵默认为[0 1]; gamma:决定曲线的形状,对gamma不同的值,如下图所示,默认参数为1. Paste_Image.png

注意: 1.除图像f外,imadjust的其他输入为[0 1],不论图像的类。若f是unit8,则函数将乘以255。 2.若是high_out小于low _out怎会输出图像反转。

2.对数和对比度拉伸变换

这两种变换时进行动态范围处理的基本工具。

对数变换 实现语法:g = c*log(1+double(f)); 该函数的形状类似于gamma函数,但是gamma曲线形状可变,log不可变。主要应用:压缩动态范围 比如傅里叶频谱的显示范围很大,高值部分占优,通过log变换可以进行压缩,便于处理。注意:期望将导致的压缩至还原为显示的全范围,以下方法实现。 gs = im2unit8(mat2gray(g)); mat2gray将值限定在[0,1]范围内,im2unit8将值限定在[0,255]范围内。 对比度拉伸变换 实现语法:`g = 1./(1 + (m./(double(f)+eps)).^E) E:控制函数的斜率 m:显示的阈值,理想条件下及变成阈值函数。主要应用:可以将输入值低于m的灰度级压缩为较暗灰度级范围内,同样,将高于m的灰度级压缩为较亮范围内。 变换图像如图所示: Paste_Image.png 实例分析

我们自己写一个m函数,实现多种亮度(灰度)变换的功能,同时输入变量可以放宽,通过检测输入变量的个数,来设置默认值。

function g = intrans(f,varargin) %intrans 函数对灰度图进行变换 % g = intrans(f,'neg')计算输入图像的负片 % % g = intrans(f,'log',c,class)计算c*log(1+f)对数拉伸变换 % 后两个参数省略,c默认为1,class用于确定输出的类型为‘unit8’和'unit16', % 如果省略,输出类型默认和输入一样 % g = intrans(f,'ganmma',gam)对图像做伽马变换,gam为要求的输入。 % % error(nargchk(2, 4, nargin)); %将输入参数的个数约束在2-4个 classin = class(f); %存储输入的类型,用以后用; if strcmp(class(f),'double') & max(f(:)) > 1 & strcmp(varargin{1},'log') f = mat2gray(f); else %对于f的其他类型转换成double类型 f = im2double(f); end %决定转换的类型 method = varargin{1}; %varargin是个单元数组 %进行确定好的转换 switch method case 'neg' g = imcomplement(f); case 'log' if length(varargin) == 1 c = 1; elseif length(varargin) == 2 c = varargin{2}; elseif length(varargin) == 3 c = varargin{2}; classin = varargin{3}; else error('Incorrect number f input for the log option.') end g = c * log(1 + double(f)); case 'gamma' if length(varargin) < 2 error('Not enough inputs for the gamma option.') end gam = varargin{2}; g = imadjust(f,[ ],[ ],gam); case 'stretch' if length(varargin) == 1 %使用默认值 m = mean2(f); E = 4.0; elseif length(varargin) == 3 m = varargin{2}; E = varargin{3}; else error('Incorrect number of inputs for the stretch option.') end g = 1./(1 + (m./(f + eps)).^E) otherwise error('Unknown enhancement method.') end %图像格式转变为输入图像的类型 g = mat2gray(g);


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有