【图像处理】MATLAB:亮度变换

2023-11-05

亮度变换

函数imadjust

f = imread('breast_digital_Xray.tif');

g1 = imadjust(f,[0 1],[1 0]);                                       %阴暗反转图像(负片图像),等同于 g1 = imcomplement(f) 
g2 = imadjust(f,[0.5 0.75],[0 1]);                                  %将0.5至0.75之间的灰度级扩展到范围[0,1]
g3 = imadjust(f,[ ],[ ],2);                                         %有更多的灰色调,方法是压缩灰度级的低端并扩展灰度级的高端

subplot(2,2,1);imshow(f);title('原始乳房肿瘤图像');
subplot(2,2,2);imshow(g1);title('负片图像');
subplot(2,2,3);imshow(g2);title('亮度范围扩展为[0.5 0.75]后的图像');
subplot(2,2,4);imshow(g3);title('使用gamma=2增强图像后的图像');


对数和对比度拉伸变换

  对数与对比度拉伸是进行动态范围处理的基本工具。对数变换通过如下表达式实现:

      g = c * log ( 1 + double ( f ) )

  当执行一个对数变换时,我们通常期望将压缩值还原为显示的全范围。对8比特而言,可使用语句:

      gs = im2uint8 ( mat2gray ( g ) ) ;

  使用函数mat2gray可将值限定在范围[0,1]内,使用函数im2uint8可将值限定在范围[0,255]内。

使用对数变换减小动态范围

f = imread('DFT.tif');
g = im2uint8(mat2gray(log(1+double(f))));
subplot(1,2,1);imshow(f);title('傅里叶频谱');
subplot(1,2,2);imshow(g);title('执行对数变换后的结果');


实用M函数

nargin 和 nargout

亮度标定gscale函数

f = imread('skeleton.tif');
g = gscale(f,'full8');
subplot(1,2,1);imshow(f);title('骨骼扫描图像');
subplot(1,2,2);imshow(g);title('亮度标定图像');

亮度变换intrans函数

f = imread('skeleton.tif');
g = intrans(f,'stretch',mean2(im2double(f)),0.9);
subplot(1,2,1);imshow(f);title('骨骼扫描图像');
subplot(1,2,2);imshow(g);title('使用对比度拉伸变换增强的图像');

附上gscale函数具体代码:

function g=gscale(f,varargin)
if length(varargin)==0
  method='full8';
else method=varargin{1};
end
if strcmp(class(f),'double')&(max(f(:))>1 | min(f(:))<0)
   f=mat2gray(f);
end


switch method
case 'full8'
        g=im2uint8(mat2gray(double(f)));
case 'full16'
        g=im2uint16(mat2gray(double(f)));
case 'minmax'
       low = varargin{2};high = varargin{3};
       if low>1 | low<0 |high>1 | high<0
             error('Parameters low and high must be in the range [0,1]')
       end
       if strcmp(class(f),'double')
            low_in=min(f(:));
            high_in=max(f(:));
       elseif  strcmp(class(f),'uint8')
            low_in=double(min(f(:)))./255;
            high_in=double(max(f(:)))./255;
       elseif   strcmp(class(f),'uint16')
            low_in=double(min(f(:)))./65535;
            high_in=double(max(f(:)))./65535;
       end

       g=imadjust(f,[low_in high_in],[low high]);
otherwise
       error('Unknown method')
end

附上intrans函数具体代码:

function g = intrans(f, varargin)
%INTRANS Performs intensity (gray-level) transformations.
%   G = INTRANS(F, 'neg') computes the negative of input image F.
%
%   G = INTRANS(F, 'log', C, CLASS) computes C*log(1 + F) and
%   multiplies the result by (positive) constant C. If the last two
%   parameters are omitted, C defaults to 1. Because the log is used
%   frequently to display Fourier spectra, parameter CLASS offers the
%   option to specify the class of the output as 'uint8' or
%   'uint16'. If parameter CLASS is omitted, the output is of the
%   same class as the input.
%
%   G = INTRANS(F, 'gamma', GAM) performs a gamma transformation on
%   the input image using parameter GAM (a required input). 
%
%   G = INTRANS(F, 'stretch', M, E) computes a contrast-stretching
%   transformation using the expression 1./(1 + (M./(F +
%   eps)).^E).  Parameter M must be in the range [0, 1].  The default
%   value for M is mean2(im2double(F)), and the default value for E
%   is 4.
%
%   For the 'neg', 'gamma', and 'stretch' transformations, double
%   input images whose maximum value is greater than 1 are scaled
%   first using MAT2GRAY.  Other images are converted to double first
%   using IM2DOUBLE.  For the 'log' transformation, double images are
%   transformed without being scaled; other images are converted to
%   double first using IM2DOUBLE.
%
%   The output is of the same class as the input, except if a
%   different class is specified for the 'log' option.
%   Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
%   Digital Image Processing Using MATLAB, Prentice-Hall, 2004
%   $Revision: 1.7 $  $Date: 2003/10/13 00:45:53 $
% Verify the correct number of inputs.
error(nargchk(2, 4, nargin))
% Store the class of the input for use later.
classin = class(f);
% If the input is of class double, and it is outside the range
% [0, 1], and the specified transformation is not 'log', convert the
% input to the range [0, 1].
if strcmp(class(f), 'double') & max(f(:)) > 1 & ...
      ~strcmp(varargin{1}, 'log')
   f = mat2gray(f);
else % Convert to double, regardless of class(f).
   f = im2double(f);
end
% Determine the type of transformation specified.
method = varargin{1};
% Perform the intensity transformation specified.   
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 of inputs 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
      % Use defaults.
      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
% Convert to the class of the input image.
%g = changeclass(classin, g);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【图像处理】MATLAB:亮度变换 的相关文章

  • MATLAB数据预处理之缺失值插补

    文章目录 前言 1 加载原始数据 2 查找缺失值并填充缺失值 总结 2021年4月5日09 51 56更新 2021年5月18日10 46 15更新 2022年10月15日07 25 01更新 参考资料 前言 现实中采集的原始数据不一定满足
  • JPEG编码过程详解

    JPEG编码过程详解 本文旨在对JPEG编码过程中的细节步骤进行说明 具体原理部分请参照Wikipedia 色彩空间转换 原始图像的像素点是以RGB形式存储的 即每个像素点由3个字节的数据组成 分别为Red通道 Green通道和Blue通道
  • 图像处理——边缘检测

    边缘检测 一 边缘检测的目的 二 边缘检测算子有哪些 三 Canny算子 3 1 简述Canny算子 3 2 简述下Canny的计算过程 四 sobel算子 4 1 简述一下sobel算子 五 深度学习下的边缘检测 5 1 HED 整体嵌套
  • c#图像几何特征匹配

    using System using System Collections Generic using System Linq using System Text using System Threading Tasks using Ope
  • matlab 读取某一文件夹下的文件

    MATLAB 是一个十分强大的科学计算软件 用于各种数据分析和科学计算 在实际工作和研究过程中 我们通常将数据存储在文件中 文件存在于系统的某个目录中 如果需要读取这些文件 可以使用 MATLAB 提供的文件和文件夹操作函数 本文将介绍如何
  • Matlab中实现图像处理的工作流程

    一 识别流程 Receipt Identification Workflow Working with Images in MATLAB Import display and manipulate color and grayscale i
  • 数字图像处理(入门篇)六 图像数据预处理之坐标变化

    目录 1 平移 2 镜像 3 旋转 4 缩放 图像的坐标变换又称为图像的几何计算 常见的基本变换包括 平移 旋转 镜像和缩放等等 1 平移 1 代码 使用OpenCV仿射变换函数 cv2 warpAffine 实现平移操作 import n
  • Conditional Prompt Learning for Vision-Language Models

    本文是对CoOp方法提出的改进 CoOp由论文Learning to Prompt for Vision Language Models提出 CoOp针对CLIP模型做了改进 将人工设计的提示修改为了可学习的参数 具体来说就是 CoOp不再
  • Windows下命令行及Java+Tesseract-OCR对图像进行(字母+数字+中文)识别,亲测可行

    Windows下Java Tesseract OCR对图像进行字符识别 亲测可行 1 下载tesseract ocr 中文语言包并安装 2 命令行对图片进行识别及效果图 3 Java调用Tesseart OCR 3 1 效果图 3 2 源码
  • 图像恢复(加噪与去噪)

    人工智能导论实验导航 实验一 斑马问题 https blog csdn net weixin 46291251 article details 122246347 实验二 图像恢复 https blog csdn net weixin 46
  • 最大似然估计【MLE】与最大后验概率【MAP】

    最大似然估计 Maximum likelihood estimation 简称MLE 和最大后验概率估计 Maximum a posteriori estimation 简称MAP 是很常用的两种参数估计方法 如果不理解这两种方法的思路 很
  • 图像二值化

    文章目录 1 图像二值化 2 图像二值化方法及Python实现 2 1 简单二值法 2 2 平均值法 2 3 双峰法 2 4 OTSU法 3 opencv python中二值化方法的应用 3 1 简单阈值分割 Simple Threshol
  • 图像的FFT变换

    一 实验设备 计算机 matlab软件 二 实验目的 1 理解并掌握图像的FFT变换的原理 2 学习使用matlab对图像进行FFT变换 三 实验原理 图像fft变换可以将图像空间域变为频率域 进而对频率域图像进行操作 这样会使操作变得简单
  • 九宫格人车识别

    一 原理 通过霍夫检测圆的个数来识别小人位置 二 过程 1 二值图像 2 去掉宫格内容 便于分割 3 对二值图填补 减少纹理 4 分割九宫格 依次检测每个宫格中圆个数 5 最终显示小人所在宫格图片 在img6 jpg中 详细程序运行结果 三
  • MEF:COA-NET

    COA NET COLLABORATIVE ATTENTION NETWORK FOR DETAIL REFINEMENT MULTI EXPOSURE IMAGE FUSION COA NET 用于细节细化多曝光图像融合的协作关注网络 近
  • Halcon直线检测

    1 Halcon最常用的直线检测算子 add metrology object line measure 利用Halcon封装好的模型不仅可以检测直线 还可以检测圆 椭圆 矩形等 下面介绍下其余的直线检测的算子 需要配合 skeleton
  • 【图像压缩】QOI图像格式详解

    最近听说一种图像格式比较流行 想起我曾经是做图像压缩的emmmm 就来研究一下 QOI Quite OK Image Format 很好的图像格式 git链接 能快速地无损压缩图像 原理也非常简单 没有各种变换 直接空域处理 而无损压缩 自
  • 图像特征提取技术

    目 录 前 言 基于颜色的特征提取 1 颜色空间 2 直方图以及特征提取 基于纹理的特征提取 1 灰度共生矩阵 2 tamura纹理 基于深度神经网络的图像处理 前 言 图像特征提取属于图像分析的范畴 是数字图像处理的高级阶段 本文将从理论
  • 【FMC141】基于VITA57.4标准的4通道2.8GSPS 16位DA播放子卡(2片DAC39J84)

    FMC141是一款基于VITA57 4标准的4通道2 8GSPS 2 5GSPS 1 6GSPS采样率16位DA播放FMC子卡 该板卡为FMC 标准 符合VITA57 4与VITA57 1规范 16通道的JESD204B接口通过FMC 连接
  • 人工智能超分辨率重建:揭秘图像的高清奇迹

    导言 人工智能超分辨率重建技术 作为图像处理领域的一项重要创新 旨在通过智能算法提升图像的分辨率 带来更为清晰和细致的视觉体验 本文将深入研究人工智能在超分辨率重建方面的原理 应用以及技术挑战 1 超分辨率重建的基本原理 单图超分辨率 利用

随机推荐

  • IOS Opengl ES 用多光源实现材质,阴影,高光效果

    在Opengl ES 1 0 中 要实现材质效果 往往需要光源的设置 如果环境光和漫反射光强了 材质效果难以体现 如果环境光和漫反射光弱了 材质就暗了 实现阴影效果 可以放置一个主平行光源 为了材质效果 需要将环境光设到比较弱 漫反射光设到
  • 学习记录-Qt布局中的Spacer使用

    在自定义控件后 使用自定义控件进行布局时 采用网格布局 当窗口大小合适 动态创建的空控件数量也合适时 那么控件之间的空白处比较小 能布满窗口 效果比较好看 但是当控件较小或者控件较少时 就都居中显示了 不想要这种效果 想要一种自动靠左对齐或
  • 线程池运行原理

    核心参数 corePollSize 核心线程池的大小 maximumPollSize 线程池能创建线程的最大个数 keepAliveTime 空闲线程存活时间 unit 时间单位 为keepAliveTime指定时间单位 workQuequ
  • 缓冲区溢出漏洞

    在计算机操作系统中 缓冲区 是指内存空间中用来存储程序运行时临时数据的一片大小有限并且连续的内存区域 根据程序中内存的分配方式和使用目的 缓冲区一般可分为栈和堆两种类型 C语言程序中定义的数组就是一种最常见的栈缓冲区 缓冲区溢出漏洞 作为软
  • 虚拟机中克隆系统后无法联网?快速定位原因,原来问题出在这里

    在实际应用中 我们通常会在虚拟机中创建多个虚拟电脑 每次都新建电脑安装系统 这样的操作会比较繁琐 虚拟机中提供了系统克隆的功能 使得我们在创建好的虚拟电脑的基础上快速的创建一个新的虚拟电脑 极大的方便了我们的使用 VirtualBox虚拟机
  • 10行代码创造一个像素,图形学版本的hello world

    10行代码创造一个像素 图形学版本的hello world 任何的图片 视频 音乐其本质都是数据 当我们要生成一张图片时 只需要将数据写入文件 仅此而已 以ppm格式图片为例 上图为维基百科的ppm格式说明 按照上图格式将数据写入到文件中
  • 树莓派+NCS2运行yolov4

    上一篇在树莓派上搭建好了Openvino的环境 现在在此环境上运行yolov4 流程 Tensorflow模型 先将权重文件 weight转化为 pb文件 然后再转化为IR模型的 bin和 xml文件 最后部署到神经计算棒NCS2运行 Py
  • Ultra-Fast-Lane-Detection 论文笔记

    大佬的论文 https arxiv org abs 2004 11757v4 大佬的代码在大佬论文里讲了 下面的翻译笔记我们是指大佬
  • Git分布式版本控制系统

    摘要 Git管理挖掘图 较为全面的查看Git的工作流程 由于网页显示限制 建议下载放大查看 Git 常用命令 Git 是一个很强大的分布式版本控制系统 它不但适用于管理大型开源软件的源代码 管理私人的文档和源代码也有很多优势 Git常用操作
  • 大数据架构:Kafka

    Kafka 是一个高吞吐 分布式 基于发布订阅的消息系统 利用Kafka技术可在廉价PC Server上搭建起大规模消息系统 Kafka具有消息持久化 高吞吐 分布式 多客户端支持 实时等特性 适用于离线和在线的消息消费 KAFKA 分布式
  • 服务器环境搭建——安装mysql

    环境 操作系统 64位的Centos7 6 mysql 8 0 25 步骤 下载rpm并上传到服务器 去官网下载对应操作系统的rpm包 我是centos7 选择第二个 当然有了链接也可以使用wget指令 避免上传的步骤 安装RPM安装包 y
  • ZABBIX实践(一) 服务端部署和安装

    zabbix 一款非常强大的监控软件 不仅可以基于SNMP监控各种网络设备 而且还可以监控linux win等各版本操作系统的状态 1 本次实践的目标 1 搭建服务端和agent 实现监控 2 摸索对于VMWare的监控 2 安装环境 se
  • Java代码重构的几种模式

    主要来源 面向对象设计原理与模式 Java版 Object Oriented Design Using Java Written by Dale Skrien Java代码的重构模式主要有三种 重命名方法重构模式 引入解释性变量重构模式 以
  • Vue项目中处理key=value格式的数据-案例

    返回值 qrCode expiredAt 1693821779265 token 449d599830b8486a9c7b15e0bc3f036c listenUri wss ws abcdtest link token0 f63c6488
  • SpringBoot Datahub DatahubException InjectionManagerFactory not found 暨 datahub中可能遇到的问题及解法

    产生原因 依赖使用的是 compile group com aliyun datahub name aliyun sdk datahub version 2 12 0 public 然后和之前自己加的包依赖产生冲突 看了下是sf4j log
  • matlab中eig用法,MATLAB中eig的用法

    在MATLAB中 计算矩阵A的特征值和特征向量的函数是eig A 常用的调用格式有 5种 1 E eig A 求矩阵A的全部特征值 构成向量E 2 V D eig A 求矩阵A的全部特征值 构成对角阵D 并求A的特征向量构成 V的列向量 3
  • Git提交指定文件

    Git提交指定文件步骤 1 git status 查看修改的所有内容 或者git status s 2 git add 引号中间放上文件名 执行上一步后 会显示文件名跟目录 3 git stash u k 忽略其他文件 很重要的一步 4 g
  • Div 高度、滚动条距 Div 顶部偏移量、Div 中文档总高度

    版权声明 分享是一种品质 开源是一种精神 https blog csdn net wangmx1993328 article details 84560051
  • 【ABviewer从零开始教学查看器篇③】打开文件之缩略图菜单

    ABViewer是一款高质量 高效率 低成本的多功能设计及工程文档管理工具 能为您提供全面的专业的浏览及编辑功能 同时支持30多种光栅和矢量图形格式 在小编看来 ABViewer是一款非常简单且实用的CAD文档查看与编辑器 对于使用小白可能
  • 【图像处理】MATLAB:亮度变换

    亮度变换 函数imadjust f imread breast digital Xray tif g1 imadjust f 0 1 1 0 阴暗反转图像 负片图像 等同于 g1 imcomplement f g2 imadjust f 0