2007年11月1日 星期四
Week7-CH4
4.1 影像處理運算可分三個等級:
(1)轉換:轉換是將像素值改變為其他種相等的形式.
(2)鄰域處理:只要知道指定像素周圍像素的灰階值,就可以改變指定像素的灰階值.
(3)點運算:在不知指定像素周圍的情況下改變該像素的灰階值.
4.2 利用點運算對影像中的像素灰階值進行數學運算,使圖片變亮變暗,曝光效果.
4.3 直方圖:
比較暗的影像,灰階層次聚集在數值低的區域.
比較亮的影像,灰階層次聚集在數值高的區域.
對比平衡的影像,灰階層次會平均分散.
問題:
關於imadjust函數:
imadjust(im,[a,b],[c,d])這個指令會依照圖4.10的函數調整影像對比
這張imadjust擴展函數的圖,不太能理解.
還有,課本中所說的小於a的像素值會自動轉成c,大於b的像素質會自動轉成d,是什麼意思呢?
Week7 CH4
看完及實做所有範例後,除了下面兩個問題不解之外,大概
了解了本章灰階影像的處理和運用。
Q1:
If we were to treat the image as a continuous function f(x,y) and the
histogramas the area between different contours , then we can treat the
histogram as a probability density function.
[P.81]---不太能理解這句。
WEEK7
2.仔細看之後發現
110那條線(4的那點)應該畫在5不是嗎??? 還是我解讀錯誤了...p.73
解決的問題有
3. th=imadjust(t,[],[],0.5); 0.5是要做什麼的? p.74
仔細看了之後,0.5應該是gamma值吧
心得:
這次又仔細看了之後,發現有很多上周都沒看到的地方,例如gamma值那就沒有看很清楚.
還友直方圖那,經過老師上次的講解+後來又自己再讀一次,才比較了解這些圖怎麼畫的...
Week7 Ch4 Rereading
之前有時候是指看指令碼...例如imadjust的功用(有點小地方還是不懂)...
不過大概做的運算應該是了解了 是將pixel值做運算 把它轉換到某個自訂的範圍之間...
然後指令碼大概的用過一遍 如製成負片(底片)之類的效果 以及imadjust調整範圍之類的
Q:關於histpwl這個指令碼..
看了一下他的function 是將陣列拿去做運算 (im(pix)-a(i))*(b(i+1)-b(i))/(a(i+1)-a(i))+b(i);
也就是 上面的piecewise linear-stretching
但是跟前的imadjust好像有點不太一樣,還是因為陣列裡有超過兩個以上的參數??
function中的流程也看不太懂...
(p76)
那前面imadjust中又有說
到imadjust(im,[a,b][c,d])中小於a會轉為C,大於b會轉為d
而imadjust(im,[][1,0])是指說小於0會轉為1,大於1會轉為0??
還有下面的變形函數y=((x-a)/(b-a))^g*(d-c)+c(中譯本裡面是平方?!)不太能夠解讀,裡面的x是指?
(p74)
week7-CH4再讀
CH4主要是用一個函式把圖丟進去,就可以把圖片做點處理
做過點處理的圖片可以變亮或是變暗,imdjust可以抓到圖片的gamma值 並且可以對作gamma值得改變,其實就像是上面的函式一樣,把圖做gamma運算時可以改變圖片的明亮度
imcomplement把一張圖value的0變1,1變0,也就是把圖片作成了相片的底片化
plot中可以把兩個陣列(或是兩張相同的圖片)做成一個函式圖 ,做成的函式圖是用兩個函式
histeq則是像之前所說的可以把一張圖做成histogram圖,可以看出這張圖片的每個像素的色彩質
WEEK7_再讀CH4
第四張的標題就是點處理,很明顯的可以知道,他針對由某些點的改變來達到所要達到的目的,而經過某些的計算可以是的圖片看起來比原圖黑或是比原圖亮。
在下指令修改照片時,我們也可以透過imadjust去取的gamma值,讓我們可以由他的分布去了解此張照片是否要亮點或是暗點。
而課本也利用補色(imcomplement),來達到相片附片的效果,也就是說當我們下X=imcomplement(c),會讓圖C看起來有底片的感覺。
但我覺得還是有一點在實作上感覺怪怪的,課本上有提到需要注意到資料的型態,但我發現就算是型態沒符合所要的,一樣是可以執行,型態好像在執行上沒有太大的影響或需要去注意他,是MATLAB幫你處理過了呢?還是?
而利用imcomplement可以讓照片有負片的效果,那如果要改變回來呢?需要輸入什麼來執行?
..........................................................................................(執行的圖片未貼)
待續
WEEK7 CHP4-Histograms
2.按照p.74最下方的程式碼
th=imadjust(t,[],[],0,5);
imshow(t.figure.imshow(th);
輸入的話會使p75figure4.12的原圖黑色部分顯得更有層次感,感覺顏色多了很多。
Arithmetic Operations
直接翻譯應該是指數值的運算
透過一些簡單的function y=f(x)用一些常數的加減乘除來改變圖的gray value
一張圖又被分成0~255個range加128就會使127或比127大的點變成255,減128則反之
這樣的調整可以改變圖片的"亮暗"
藉由改變整張圖片的點的值來達到改善圖片的品質或是偵測出圖片隱藏的內容,
p.67的座標圖橫軸代表了函數的input縱軸代表outpiut透過這個座標軸
可以表現出整張圖片的所有點的情況,也不會因為不同圖片的大小而受到影響,
4.3Histogram
影像直方圖,能夠呈現整張圖片的像素值分佈情形
較暗的圖片,histogram呈現出來的分怖會偏高反之則偏低
- Histogram Stretching(影像直方圖延展)
使一張過黑而難以辨識的圖片輪廓變得清晰
f(x)=[(14-2)/(9-5)]*(x-5)+2
input x = 5 , 6 , 7 ,8 ,9
output f(x) = 2 , 5 , 8 ,11,14
我想應該還有其他的函數能夠達到這樣的效果
- Histogram Equalization(影像直方圖等化)
課本馬上提供另外一個方法,因為streatch的方法要求使用者必須要input資料
在某些情況下會造成不便,這個方法能使像素的分佈差異大幅減少效果跟Stretch很像可是效果更好,可提供較佳的影像品質。
不過我不是很明白這個方法的原理?
week6-Chapter4 again
Error in ==> imhist>parse_inputs at 192
iptcheckinput(a, {'double','uint8','logical','uint16','int16','single'}, ...
Error in ==> imhist at 57
[a, n, isScaled, top, map] = parse_inputs(varargin{:});
Data may not have more than 2 dimensions
imdivide_4.jpg)
imdivide_4_hist.jpg)
imdivide_0.5.jpg)
imdivide_0.5_hist.jpg)
WEEK7_再讀CH4
發覺到在轉換的過程中,要極度的重視,資料再轉換的時候,型態的變換會直接的影響到值,如果此時改變的型態,在改變型態之前是超出改變之後的範圍的話,那道時印出來的圖片會呈現的很奇怪。
利用一指定像素周圍的灰階值,可以間接性的改變指定像素的灰階值。
這分別

背景圖片有一堆數字是在我輸入
b1=b+128她並沒有如課本那樣出現錯誤訊息...
只是列出一大堆的數字,搞不懂為何會這樣子?
然而在做直方圖的時候也出現一個瓶頸

當我打完imshow(p) , figure , imhist(p),axis tight時,他就出現了
??? Function IMHIST expected its first input, I or X, to be two-dimensional.
Error in ==> imhist>parse_inputs at 192
iptcheckinput(a, {'double','uint8','logical','uint16','int16','single'}, ...
Error in ==> imhist at 57
[a, n, isScaled, top, map] = parse_inputs(varargin{:});
↑↑↑上面的問題 我有確認過圖片的屬性,它上面型態是uint8 應該是有符合前面那一行,跟後面那一行就不懂了...?
上面就是兩個我提出的問題
week7 ch4
CH4的內容又重頭再給它看一次,並重新操作一次,然後用別的圖試試看,沒想到狀況出現了,一開始的加減128成功顯示,只是我的圖片很噁心….
就這樣…..
我進一步繼續下去,直到…….
直方圖,我還真的不太懂,他跑出
>> imshow(p),figure,imhist(p),axis tight
??? Function IMHIST expected its first input, I or X, to be two-dimensional.
Error in ==> imhist>parse_inputs at 192
iptcheckinput(a, {'double','uint8','logical','uint16','int16','single'}, ...
Error in ==> imhist at 57
[a, n, isScaled, top, map] = parse_inputs(varargin{:});
還有一個空的Figure視窗,什麼都沒有了。
不懂他的意思,卡關囉!還有待解決,上禮拜的圖跟程式忘了保留,沒辦法比對了,只好在重頭開始。
WEEK7_再讀CH4


1.在嘗試Gamma值的時候 感覺不太出來,他所要代表的意思!?
只覺得一個原圖和一張imadjust的處理只覺得圖片變亮 = =
(在嘗試PLOT的程式時INPUT的時候格是要是'uint8')
2.我在執行imdivide的時候沒有問題但是要執行imhist的時候就會出現ERRO
?? Function IMHIST expected its first input, I or X, to be two-dimensional.......
對於直方圖等化看圖可以知道圖片的變化P.81但是還不太能知道為什麼等化完圖片有所變化
3.是否可以用 LUT的方法做出片段擴展的函數!?
這一張教了很多指令,所以自己操作起來還不錯
操作過一次比看課本的圖更有印象,透過我們下的指令
來改變圖片的點,產生我們所需要的效果。
HISTOGRAMS對於影像方面是很重要的,任何一張圖片都可以透過HISTOGRAM
來了解這張圖片,對於LUT還不是很懂希望經過討論以後可以更加的了解。
Week 7_再讀CH4
不過我猜想是新舊版本matlab的關係,方便使用者使用吧!
算數運算調整圖片的值,增加會變亮,減少會變暗
~m這個指令是把圖片變成底片效果的,
實際操作的時候卻沒有那樣的效果,不知道為什麼

axis tight的效果

74. 73頁提到imadjust(im,[a,b],[c,d])指的是小於a轉換成c,大於b轉換成d.那74頁下面th=imadjust(t,[],[],0.5) 後面加個0.5是改變什麼??
e=imdivide(en,4)把圖片除以4,所以變暗
查表法之所以速度快,因為每個值都有對應改變的值,省去運算,所以效率好
Week 7 重讀Chapter 4
Point processing 是只針對單點作處理,而不考慮其他點和統計特性,原因是簡單化~
但是它可以透過一些function或是公式,來達到目的。
像是image negative,通常用於在黑暗的影像中加強白色或灰色的部分。
而這章重點是在4-3節的Histograms:
如圖histogram 整體偏左,所以圖形偏暗

所以,理想的圖片的Histogram應該分佈較為平均。
而Histogram Equalization就是要得到分佈較為平均的影像。
問題來了:
1.如果我把一張圖的像素,做Random排列(老實說,我不知道怎麼去Random它~XD),它的Histogram會改變嗎?照理講,會不會有些地方偏暗,有些地方偏亮呢?
另外 4.4的Lookup Tables
(1.) give an output value for each of a range of index values
(2.)One common LUT, called the colormap or palette
因為Matlab的矩陣是從1開始,所以執行不出來。
而在課本的Page.83.
>>t1=0.6667*[0:64];
>>t2=2*[65:160]-128;
>>t3=0..6632*[161:255]+85.8947;
>>T=uint8(floor([t1 t2 t3]));
產生了一個新Table,照課本解釋是讓使用者修改圖時,針對這個Table去改變,不過我不知道它為何公式是這樣算?
重讀之後的心得:
在上個禮拜,課堂上著重在4.2節,這次在看一次第四章之後,重心放在4.3節、4.4節,
再看一次之後,有了更深一步的了解。
Point Processing顧名思義就是......引用小溫的話:藉由改變整張圖片的點的值來達到改變圖片的目的!!http://hwshow-ipc.blogspot.com/2007/10/week6-ch4-point-processing_25.html
Week7-再讀 CHAPTER 4
除上常數c則變暗。
4.3.1裡有介紹如何將histogram延展,就是改變GAMMA的值,如果gamma值小於1時,色彩對比度不高;當gamma值大於1時,色彩對比度高,人眼看起來較為鮮豔。
4.4 Lookup Tables
最後,我要問一個問題,Histogram Equalization做越多次會對圖越有用嗎?
Week7_重讀Chapter4
1.將圖片加128和減128
2.將圖片除以2倍,乘以2倍及除以兩倍再加128
4.用imcomlement 將圖片值轉換成補數
再看書過程中 ,有些指令真的看不泰懂!!! 我就會照著老師所說的去實作看看!!!
有些指令我再實作時會了解他的公用並且會去探討指令其他的值改變的情形!!!
問題 :
再閱讀時閱讀到p73中的imjust這個指令不太懂它所續續的指令意思.於是我就實際操作去觀察它的變化.
第二張圖是imadjust(im,[],[],0.5);
第三張圖是imadjust(im,[],[],1);
第四張圖是imadjust(im,[],[],1.5);
結果我發現圖片漸漸變深,這個函數的最後一個所輸入的值,類似於將圖片所有的值同乘以某一個倍數!!!
下面這張圖示我去將這司張圖的陣列叫出來比較:
然後我對imjust指令中(im,[],[1,0])不了解,所以我也去操作一次
發現它的功能就類似於imcomlement 將圖片的值換成補數!!!
但是我依然不明白在[1,0]前面的[]公用為何!!!所以我將它是著也改成[1,0]看看,但是出現了錯誤
第一張圖是[][]都不改變
第二張圖是[][1,0]
第三張圖是[0,1][]
發現跟我所想的依樣,[0,1][]就是原圖,而[][1,0]就是補數
Week 7 重讀Chapter 4
*************************************************************************
Q. imadjust 、plot用法?
plot的用法:就是把X、Y座標列出來。舉例來說→plot(x,y)
把XY座標連起來,若加上→plot(x,y,'.')就是以
.來顯示,會比較好看
imadjust的用法:是說調整亮度,把舊影像寫入新影像中,
以GAMMA當基準判定,當小於1時,輸出
更亮,反之大於1時,輸出更暗
**************************************************************************
衍伸問題~
1.4.3.2所講的Histogram Equalization是做灰階影像平均分布的吧?
為何可以當做加強影像來用勒?
(這題應該可以找的到答案,我會回去再試試看)
**********************************************************
再讀心得
①在做影像的運算時,要注意3點
1.轉換 2.鄰近像素處理 3.點的運算
②可以對圖片做影像調整,透過MATLAB一些指令,亦可以看出起變化率
③難以計算的就透過查表法來求的值
這禮拜主要在把上禮拜我提出的問題做解決,許多指令經過測試並照著課本一起
看,總算把大部分的指令的功能都了解了,上面就有我自己試過指令,當然還有
一些指令沒寫出來,因為並沒有非常確定,想在多測試一下,之後應該能靠自己
解決,這是這週的實作心得
2007年10月31日 星期三
week7_CH4
- P71 axis tight
- P74 imadjust error
但是a,b為不可更改,執行指令會發出error警告,想應該是a,b為原圖的histrogram灰階範圍,所以不可更動.
- P75 gamma
week7 ch4
我推測上星期問的第一題 p67 中的程式碼照著打時沒有出現錯誤應是版本問題,而課本出現的那個array應該是檔案的內容形態是array,但是我仍然不知道我的這個版本多出來的 Attributes 是會顯示哪些東西?我也做過好幾次測試了仍然沒顯示東西.
而第二題 p77 histpwl 在上課時有講到我也大概清楚是在做什麼的,但是我仍然看不出來此頁的程式碼histpwl(t,[0 .25 .5 .75 1],[0 .75 .25 .5 1]);中的[0 .25 .5 .75 1]與[0 .75 .25 .5 1]因為數字
前有個點所以不清楚那個點的意義.
第三題大致上清楚在做什麼了,而rounded value雖然仍不知道直翻是什麼意思(已經查過)但是大致上知道是做完處理後的gray level值.
p82 因為我上星期沒有看到4-4所以這次把他看完,我記得上次老師好像說4-4的執行不出來但是我去測試卻可以執行,後來我測試了一下發現只有 engineer.tif 這張圖可以跑而用其他的則會出現下面這行錯誤??? Subscript indices must either be real positive integers or logicals.
不過這行錯誤我看不太懂.
原圖

<==p82程式處理過後