‘壹’ matlab HSI 格式图像 intensity/hue/saturation image归一化有什么作用怎么实现
什么叫归一化?怎么联系到HSI格式的?
我理解的归一化是将数据变成某种相对值关系(它是一种无量纲处理手段),例如:将0~255这间的数据double化为0~1(相对值)。
从RGB到HSI只是对同一图像用不同的方式表示,这样有利于使用不同的方法进行处理。
例如:我想将一幅图像的饱和度提高,那么直接用RGB不太容易,于是转化为HSI后,就非常容易了。
下面是转换代码RGB和HSI的互换代码。
--------------------------------------------------------------------------
function
hsi=rgb2hsi(rgb)
%RGB2HSI
Converts
an
RGB
image
to
HSI
%
HSI=RGB2HSI(rgb)
converts
an
RGB
image
to
HSI.
The
input
image
is
%
assumed
to
be
of
size
M-by-N-by-3,
where
the
third
dimension
accounts
%
for
three
image
planes:red,
green,
and
blue,
in
that
order.
If
all
RGB
%
component
images
are
equal,
the
HSI
conversion
is
undefined.
Ths
input
%
image
can
be
of
class
double
(with
values
in
the
rang[0,1]),
uint8,
or
%
uint16.
%
The
output
image,
HSI,
is
of
class
double,
where:
%
hsi(:,:,1)=
hue
image
normalized
values
to
the
range
[0,1]
by
%
dividing
all
angle
values
by
2*pi.
%
hsi(:,:,2)=saturation
image,
in
the
range
[0,1].
%
hsi(:,:,3)=intensity
image,
in
the
range
[0,1].
%Extract
the
indivial
component
images.
rgb=im2double(rgb);
r=rgb(:,:,1);
g=rgb(:,:,2);
b=rgb(:,:,3);
%Implement
the
conversion
equations.
num=0.5*((r-g)+(r-b));
den=sqrt((r-g).^2+(r-b).*(g-b));
theta=acos(num./(den+eps));
H=theta;
H(b>g)=2*pi-H(b>g);
H=H/(2*pi);
num=min(min(r,g),b);
den=r+g+b;
den(den==0)=eps;
S=1-3.*num./den;
H(S==0)=0;
I=(r+g+b)/3;
%Combine
all
three
results
into
an
hsi
image.
hsi=cat(3,H,S,I);
function
rgb=hsi2rgb(hsi)
%HSI2RGB
Converts
an
HSI
image
to
RGB.
%
HSI2RGB
Converts
an
HSI
image
to
RGB,
where
HSI
is
assumed
to
be
of
%
class
double
with:
%
hsi(:,:,1)=
hue
image
normalized
values
to
the
range
[0,1]
by
%
dividing
all
angle
values
by
2*pi.
%
hsi(:,:,2)=saturation
image,
in
the
range
[0,1].
%
hsi(:,:,3)=intensity
image,
in
the
range
[0,1].
%
The
components
of
the
output
image
are:
%
rgb(:,:,1)=red;
%
rgb(:,:,2)=green.
%
rgb(:,:,3)=blue.
%Extract
the
individaul
HSI
component
images.
H=hsi(:,:,1)*2*pi;
S=hsi(:,:,2);
I=hsi(:,:,3);
%Implement
the
conversion
equations.
R=zeros(size(hsi,1),size(hsi,2));
G=zeros(size(hsi,1),size(hsi,2));
B=zeros(size(hsi,1),size(hsi,2));
%
RG
sector
(0<=H<2*pi/3).
idx=find((0<=H)&(H<2*pi/3));
B(idx)=I(idx).*(1-S(idx));
R(idx)=I(idx).*(1+S(idx).*cos(H(idx))./cos(pi/3-H(idx)));
G(idx)=3*I(idx)-(R(idx)+B(idx));
%BG
sector
(2*pi/3<=H<4*pi/3).
idx=find((2*pi/3<=H)&(H<4*pi/3));
R(idx)=I(idx).*(1-S(idx));
G(idx)=I(idx).*(1+S(idx).*cos(H(idx)-2*pi/3)./cos(pi-H(idx)));
B(idx)=3*I(idx)-(R(idx)+G(idx));
%BR
sector.
idx=find((4*pi/3<=H)&(H<=2*pi));
G(idx)=I(idx).*(1-S(idx));
B(idx)=I(idx).*(1+S(idx).*cos(H(idx)-4*pi/3)./cos(5*pi/3-H(idx)));
R(idx)=3*I(idx)-(G(idx)+B(idx));
%Combine
all
three
results
into
an
RGB
image.
Clip
to
[0,1]
to
compensate
for
floating-point
arithmetic
rounding
effects.
rgb=cat(3,R,G,B);
rgb=max(min(rgb,1),0);
‘贰’ 简要说明图像归一法原理及方法
归一化灰度组合法是基于灰度组合矩阵的一种灰度相关法
,主要利用相似图像间像素灰度组合应该最少的原理进行图像匹配。它可以统一地表示其它灰度相关法
,解决了相关法对噪声和灰度变化敏感的问题。算法中主要涉及整数运算
,与其它相关法相比
,运算速度更快
,并且可以通过灰度量化使归一化灰度组合法速度更快
,匹配度更高
,匹配唯一性更好。实验表明减少灰度量化级数不影响图像匹配值的大小。
‘叁’ matlab图像处理为什么要归一化和如
一、为什么归一化
1.
基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图
像变换的影响。也就是转换成唯一的标准形式以抵抗仿射变换
图像归一化使得图像可以抵抗几何变换的攻击,
它能够找出图像中的那些不变量,
从而
得知这些图像原本就是一样的或者一个系列的。
因为我们这次的图片有好多都是一个系列的,所以老师把这个也作为我研究的一个方
向。
我们主要要通过归一化减小医学图片由于光线不均匀造成的干扰。
2.matlab
里图像数据有时候必须是浮点型才能处理,而图像数据本身是
0-255
的
UNIT
型数
据所以需要归一化,转换到
0-1
之间。
3.
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,
成为纯量。
目的是为了:
(1).
避免具有不同物理意义和量纲的输入变量不能平等使用
(2).bp
中常采用
sigmoid
函数作为转移函数,归一化能够防止净输入绝对值过大引起的神经
元输出饱和现象
(3).
保证输出数据中数值小的不被吞食
3.
神经网络中归一化的原因
归一化是为了加快训练网络的收敛性,可以不进行归一化处理
归一化的具体作用是归纳统一样本的统计分布性。
归一化在
0-1
之间是统计的概率
分布,归一化在
-1--+1
之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是
为了建模还是为了计算,
首先基本度量单位要同一,
神经网络是以样本在事件中的统计分别
几率来进行训练(概率计算)和预测的,归一化是同一在
0-1
之间的统计概率分布;
当所
有样本的输入信号都为正值时,
与第一隐含层神经元相连的权值只能同时增加或减小,
从而
导致学习速度很慢。
为了避免出现这种情况,
加快网络学习速度,
可以对输入信号进行归一
化,使得所有样本的输入信号其均值接近于
0
或与其均方差相比很小。
归一化是因为
sigmoid
函数的取值是
0
到
1
之间的,
网络最后一个节点的输出也是
如此,
所以经常要对样本的输出归一化处理。
所以这样做分类的问题时用
[0.9 0.1 0.1]
就要比
用
[1 0 0]
要好。
但是归一化处理并不总是合适的,
根据输出值的分布情况,
标准化等其它统计变换方法有时
可能更好。
二、如何归一化
matlab
中的归一化处理有三种方法
1. premnmx
、
postmnmx
、
tramnmx
2. restd
、
poststd
、
trastd
3.
自己编程
(1)
线性函数转换,表达式如下:
y=(x-MinValue)/(MaxValue-MinValue)
说明:
x
、
y
分别为转换前、后的值,
MaxValue
、
MinValue
分别为样本的最大值和最小值。
(2)
对数函数转换,表达式如下:
y=log10(x)
说明:以
10
为底的对数函数转换。
(3)
反余切函数转换,表达式如下:
y=atan(x)*2/PI
(4)
一个归一化代码
.
I=double(I);
maxvalue=max(max(I)');%max
在把矩阵每列的最大值找到,
并组成一个单行的数组,
转置一
下就会行转换为列,再
max
就求一个最大的值,如果不转置,只能求出每列的最大值。
f = 1 - I/maxvalue; %
为什么要用
1
去减?
Image1=f;
图像归一化到
[0,255]
(im
-
min(min(im)))
./
(max(max(im))
–
min(min(im))) * 255
‘肆’ envi中怎么对图像进行归一化(把值都变为0到1之间),bandmath中怎么求出该图像最大值
主菜单 Basic Tools - Stretch Data实现
‘伍’ 怎么进行图像的尺度,平移归一化
归一化就是概率归1,以灰度图为例,就是计算出各个灰度级所出现的概率,假设为P(k),
计算之后求出累积概率设为Pi(k),
最后,建议映射,关系式是int((n-1)*Pi(k) + 1);
‘陆’ 图像灰度直方图归一化 matlab实现
因为计算的是灰度直方图,所以要先将彩色图像转化成灰度图像才可以
进行处理,否则会出错
‘柒’ envi中怎么对图像进行归一化(把值都变为0到1之间)
主菜单 Basic Tools - Stretch Data实现
‘捌’ 如何在Matlab中将CT图像转成灰度图像CT值怎么进行合理的归一化
先导CT图进AI,然后用AI的矢量化功能,对图片进行较少色阶层次的矢量化,然后就自动算出了一些灰度阶层和明显区域的边缘路径。
然后多层AI文件逐一导入3DSMax,分开相应的距离后,用Suface蒙皮方法,勾连线条顶点,建出比较贴切的内外部3D模型。我只是尝试,取样值设得比较低,最后出来得模型只能说大形还对,细节就谈不上了。但要是能拿到CT图正主得照片做贴图,应该能有点效果。
‘玖’ matlab图像处理为什么要归一化和如何归一化
1.
基本上归一化思想是利用图像的不变矩寻找一组参数使其能够消除其他变换函数对图
像变换的影响。也就是转换成唯一的标准形式以抵抗仿射变换
图像归一化使得图像可以抵抗几何变换的攻击,
它能够找出图像中的那些不变量,
从而
得知这些图像原本就是一样的或者一个系列的。
因为我们这次的图片有好多都是一个系列的,所以老师把这个也作为我研究的一个方
向。
我们主要要通过归一化减小医学图片由于光线不均匀造成的干扰。
2.matlab
里图像数据有时候必须是浮点型才能处理,而图像数据本身是
0-255
的
UNIT
型数
据所以需要归一化,转换到
0-1
之间。
3.
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,
成为纯量。
目的是为了:
(1).
避免具有不同物理意义和量纲的输入变量不能平等使用
(2).bp
中常采用
sigmoid
函数作为转移函数,归一化能够防止净输入绝对值过大引起的神经
元输出饱和现象
(3).
保证输出数据中数值小的不被吞食
3.
神经网络中归一化的原因
归一化是为了加快训练网络的收敛性,可以不进行归一化处理
归一化的具体作用是归纳统一样本的统计分布性。
归一化在
0-1
之间是统计的概率
分布,归一化在
-1--+1
之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是
为了建模还是为了计算,
首先基本度量单位要同一,
神经网络是以样本在事件中的统计分别
几率来进行训练(概率计算)和预测的,归一化是同一在
0-1
之间的统计概率分布;
当所
有样本的输入信号都为正值时,
与第一隐含层神经元相连的权值只能同时增加或减小,
从而
导致学习速度很慢。
为了避免出现这种情况,
加快网络学习速度,
可以对输入信号进行归一
化,使得所有样本的输入信号其均值接近于
0
或与其均方差相比很小。
归一化是因为
sigmoid
函数的取值是
0
到
1
之间的,
网络最后一个节点的输出也是
如此,
所以经常要对样本的输出归一化处理。
所以这样做分类的问题时用
[0.9 0.1 0.1]
就要比
用
[1 0 0]
要好。
但是归一化处理并不总是合适的,
根据输出值的分布情况,
标准化等其它统计变换方法有时
可能更好。
二、如何归一化
matlab
中的归一化处理有三种方法
1. premnmx
、
postmnmx
、
tramnmx
2. restd
、
poststd
、
trastd
3.
自己编程
(1)
线性函数转换,表达式如下:
y=(x-MinValue)/(MaxValue-MinValue)
说明:
x
、
y
分别为转换前、后的值,
MaxValue
、
MinValue
说明:以
10
为底的对数函数转换。
(3)
反余切函数转换,表达式如下:
y=atan(x)*2/PI
(4)
一个归一化代码
.
I=double(I);
maxvalue=max(max(I)');%max
在把矩阵每列的最大值找到,
并组成一个单行的数组,
转置一
下就会行转换为列,再
max
就求一个最大的值,如果不转置,只能求出每列的最大值。
f = 1 - I/maxvalue; %
为什么要用
1
去减?
Image1=f;
图像归一化到
[0,255]
(im
-
min(min(im)))
./
(max(max(im))
–
min(min(im))) * 255
‘拾’ 请教怎样对图像进行亮度归一化处理
如果你的“归一化”指的是吧图像每个像素点都变成同一个值,那么过程如下。
cvCvtColor(src,dst,CV_BGR2HSV),参数我记不太清楚了 ,大概就是这样,意思是把BGR图像src转成HSV图像dst。
dst的三个通道里存的是H,S,V,H是色彩,S是饱和度,V是亮度。要灰度归一化,只要把图像dst的每个像素V改得一样就行了。注意V的范围是0-180,不能超过这个范围。
最后再把dst转成能够输出到屏幕的BGR图像,cvCvtColor(dst,dst2,CV_HSV2BGR),这样dst2就是归一化之后的BGR图像