『壹』 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圖像