图像算法一:【图像点运算】灰度直方图、伽马变换、灰度阈值变换、分段线性变换、直方图均衡化
灰度直方图:imhist()
%描述了图像灰度统计信息,主要应用于图像分割和图像灰度变换。>>Img=imread( ' xxx.jpg' ); %读图>>I=imhist(Img); %表示方式1. Img- 原图>>I2=imhist(Img,n); %表示方式2. n- 灰度级数目>>[ counts , x ]=imhist(Img); %表示方式3. counts- 直方图数据向量 x- 保存直方图小区间的向量
伽马变换:imadjust()
%γ:gamma变换,又称指数变换or幂次变换,是一种常用的灰度非线性变换。
% γ>1:高灰度区
% γ<1:低灰度区
% γ=1:不改变原图
J=imadjust(Img, [ low_in, high_in] , [ low_out, high_out] , gamma); % [ ] 阈值选择在[0,1]之间。>>Img=imread( ' xxx.jpg' ); %读图>>imshow( imadjuest (Img, [ ] , [ ] , 0.5 ) ); %gamma=0.5 浅>>imshow( imadjuest (Img, [ ] , [ ] , 1 ) ); %gamma=1 原>>imshow( imadjuest (Img, [ ] , [ ] , 1.5 ) ); %gamma=1.5 深
灰度阈值变换(二值化):graythresh()
%灰度阈值变换可以将一幅gray灰度图转换成黑白的二值图像。
%如果图像中的某像素灰度值小于该灰度值,则置为0,否则置为255。
%f(x)= {0 x< T T为指定的阈值
% {255 x>=T
% ______ ( 1 )
% |
% _____| ( 0 )
BW= imshow ( Img, level ); %Img- 待输入图像 level- 变换阈值的一个0~1的双精度浮点数。thresh=graythresh ( Img ); %thresh- 计算得到最优化的阈值>>Img=imread( ' xxx.jpg' ); %读图>>thresh=graythresh(Img)thresh =0.5378>>bw1=im2bw( Img, thresh ); %二值化 已知thresh=0.5378>>bw2=im2bw( Img, 130/255); %以130为阈值实现二值化,注意要将此阈值转换至【0,1】之间>>figure;imshow(bw1);title('自动选择阈值');>>figure;imshow(bw2);title('阈值130');
分段线性变换:imgrayscaling()
%分段线性变换的目的:增强原图各部分的反差,也就是增强输入图像中感兴趣的灰度区,抑制不需要的部分。
%分段线性变换有很多种,eg:灰度拉伸、灰度窗口变换等。
%优势: 形式可任意合成
%劣势: 需要更多用户输入
%斜率:k>1 扩展
% k<1 压缩
%function [A, map, x1, x2, y1, y2 ] = parse_inputs( varargin )
%此函数是用来分析输入参数个数和有效性的函数parse_inputs
%A 输入图像
%map 索引图调色板(:,3)
%[x1,x2] 参数组1,曲线中的两个转折点的横坐标
%[y1,y2] 参数组2,曲线中的两个转折点的纵坐标
function [A, map, x1, x2, y1, y2 ] = parse_inputs( varargin )map = [ ]; %首先建立一个空的map变量,以免后面调用isempty( map )时出错。iptchecknargin(3,4,narargin,mfilename); %检查输入参数个数是否符合要求(low,high,num_inputs,func_name);iptchecknargin(varargin{1},...{'uint8','uint16','int16','double'},...{'real','nonsparse'},mfilename,'Img, x or RGB' , 1); %检查给定矩阵元素(A,classes,attributes,func_name,var_name,arg_pos);switch nargincase 3 %可能是imgrayscaling(Img,[x1,x2],[y1,y2]) %或者imgrayscaling(RGB, [x1,x2],[y1,y2])A=varargin{ 1 }; % 3个参数x1=varargin{ 2 } (1);x2=varargin{ 2 } (2);y1=varargin{ 3 } (1);y2=varargin{ 3 } (2);case 4 %imgrayscaling(X,map,[x1,x2],[y1,y2])A=varargin{ 1 }; % 4个参数map=varargin{ 2 };x1=varargin{ 2 } (1);x2=varargin{ 2 } (2);y1=varargin{ 3 } (1);y2=varargin{ 3 } (2);end
输出的处理:可以直接通过 nargout 这个参数便可以判断用于接受结果的参数个数。
% IMGRAYSCALING- 执行灰度拉伸功能
function out = imgrayscaling(varargin)[ A, map, x1, x2, y1, y2 ]= parse_inputs(varargin{:});range = getrangefromclass(A);range = range(2);%判断图像是RGB还是GRAY灰度图,如果不是灰度图,则需要执行转换if ndims(A)==3 %A矩阵为3维,则是RGB图像A = rgb2gray(A);elseif ~isempty(map) %map变量为非空,则索引图像A = ind2gray(A,map);end %对灰度图无需转换[M,N]=size(A);Img= im2double(A);out=zeros(M,N);for i=1:Mfor j=1:Nif Img(i,j)<x1out(i,j)=y1 * Img(i,j) / x1;elseif Img(i,j)>x2out(i,j)=(Img(i,j)-x2) * (range-y2) / (range-x2) + y2;elseout(i,j)=(Img(i,j)-x1) * (y2-y1) / (x2-x1) + y1;endendendif isa(A,‘uint8’) %将输出图像的格式转化为与输入图像相同out = im2uint8(out);elseif isa(A,'uint16')out = im2uint16(out); %其他情况,就双精度浮点型图像end%输出if nargout==0 %如果没有提供参数接受返回值imshow(out);return;end
直方图均衡化:histeq()
%直方图均衡化又称灰度均衡化是指通过某种灰度映射在每一灰度级上都能均匀的输出近似相同的像素点。
[output, T ]=histeq(Img); %Img- 原始图像
%output- 经过直方图均衡化的输出图像
%T- 变换矩阵
>>Img=imread('xxx.jpg');>>Img=im2double(Img);>>Img1=2 * Img - 55/255;>>figure;imshow(Img1);>>imhist(Img1);>>figure;imshow(histeq(Img1));>>figure;imhist(histeq(Img1));
其他相关文章请点击:
图像算法一:【图像点运算】灰度直方图、伽马变换、灰度阈值变换、分段线性变换、直方图均衡化
图像算法二:【图像几何变换】平移、镜像、转置、缩放、旋转、插值
图像算法三:【图像增强--空间域】图像平滑、中值滤波、图像锐化
图像算法四:【图像增强--频率域】傅里叶变换、快速傅里叶变换、频域滤波、频域低通滤波、频域高通滤波
图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
图像算法六:【彩色图像处理】彩色模型、彩图处理
图像算法七:【形态学图像处理】二值运算、膨胀、腐蚀
图像算法八:【图像分割】边缘检测(Roberts,Sobel,canny)、霍夫变换(hough)、阈值分割、区域分割
图像算法九:【图像特征提取】特征降维、PCA人脸特征抽取、局部二进制
~~~~
图像算法一:【图像点运算】灰度直方图、伽马变换、灰度阈值变换、分段线性变换、直方图均衡化相关推荐
- python 数据图像修正_图像处理gamma修正(伽马γ校正)的原理和实现算法
本文转自博客园:淇淇宝贝的文章<图像处理之gamma校正>,原文链接:https://www.cnblogs.com/qiqibaby/p/5325193.html 一.gamma校正背景 ...
- OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)
人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力.FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台.每周免费提供 ...
- 数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换、对数变换、伽马变换和分段线性变换)
数字图像处理-空间域处理-灰度变换-基本灰度变换函数(反转变换.对数变换.伽马变换和分段线性变换) 空间域处理是直接对像素进行操作的方法,这是相对于频率域处理而言的.空间域处理主要分为两大类:灰度变换 ...
- 数字图像处理实验之伽马变换
伽马变换的效果和对数变化的效果类似.伽马变换的基本形式为: 对于不同的gamma值,s与r的关系曲线如下图所示: gamma值小于1,可以看到处理结果扩展了低灰度值:gamma值大于1,可以看到处理结 ...
- 【转】伽马校正(Gamma Correction)
在未得到原作者的同意下转载,特地在此贴出源地址以作声明:http://blog.163.com/hong.lg0518@126/blog/static/18907460200972711556304/ ...
- c语言字母伽马值,液晶屏里面伽马值是做什么用的?
AOC的设置里,那3个伽马是什么意思呀? AOC的设置里,那3个伽马是什么意思呀? 今天刚买了个AOC(冠捷)E936VW 显示器里面设置的3组伽马值,选择的话,色彩会有变化的,一般小编们普通用户是不 ...
- 伽马校正(gamma correction)学习笔记
学习HDR和Bloom特效的过程中,接触到了伽马矫正的问题.查阅了不少资料,这一篇讲的最清楚,下面的图片也是来自该文章. 这应该说是一个历史遗留问题,以前的CRT显示器是使用电子显像管,通过控制电流大 ...
- 图像的常用灰度变换——负片、伽马变换、对数变换、直方图均衡化、自适应灰度变换及其MATLAB实现
灰度变换是图像预处理的重要手段,常见的变换方法如下,图文并茂和大家一起学习: %% 尝试灰度变换--伽马变换和对数变换.直方图均衡化clc,clear,close allf = imread('C:\ ...
- python 视频 灰度 伽玛_Python 图像处理实战 | 图像的灰度非线性变换之对数变换、伽马变换...
作者 | 杨秀璋 来源 | CSDN博客 责编 | 夕颜 头图 | 付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 本篇文章主要讲解非线性变换,使用自定义方法对图像进行灰度化处理,包 ...
最新文章
- 【ACM】Uva 455
- ASP.NET MVC – HTML 帮助器简介
- 美团架构师开源5万字的《Java面试手册》PDF免费下载!
- module 'thread' has no attribute
- ADO.NET DataSet 数据模型
- *PAT_B_1024_Java(20分)
- mybatis if-else(写法)
- 精通 ASP.NET MVC 4 学习笔记(一)
- 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则
- 陈丽琳:如何以大数据助力商场运营
- [转]C#操作varbinary(MAX)字段
- 实战(一):对“钉钉”的逆向(实现打卡功能)
- Notes on Operating System
- ESET NOD32 Antivirus – 免费 3个月/ 3PC
- 脑智前沿科普:脑深部电刺激治疗帕金森病的原理
- 吉林省辽源市谷歌高清卫星地图下载
- Linux环境安装ghostscript
- python爬虫设计背景_Python网络爬虫(增量式爬虫)
- 韩顺平python教程视频_尚硅谷_韩顺平_Linux_2018Linux基础入门教程全集
- 硕士毕业论文的致谢怎么写
热门文章
- 波斯语网站步百度后尘糟伊朗网军出击
- Oracle中的AWR,全称为Automatic Workload Repository
- websql使用实例
- POJ 1064 Cable master (二分答案)
- Serv-U FTP Jail Break(越权遍历目录、下载任意文件)
- 实数在java中的表示,java - 如何在Z3(Java)中从模型中获取实数值作为小数(双精度)? - SO中文参考 - www.soinside.com...
- 前端开发工程师,找工作应该选择大公司还是小公司?
- 这11个JavaScript小技巧,你在大多数教程中是找不到的!
- php 正则xml文件,php 读取xml的方法三---用php正则表达式来记取数据
- dw2019连接mysql数据库_VS2019连接mysql8.0数据库的教程图文详解