顯示具有 2007w7 標籤的文章。 顯示所有文章
顯示具有 2007w7 標籤的文章。 顯示所有文章

2007年11月1日 星期四

Week7 CH4

心得:
在看完本章後,了解對圖做處理能有3種:轉換和臨域處理和點運算
操作過一些指令後了解到使圖片變亮變暗以及能製成底片之類的效果
也能利用4.2數學運算改變像素的值
4.3直方圖:能了解圖片像素分布和出現次數的圖

Q1:不懂imadjust和gamma的關西..既然imadjust已經能處理圖片了,那加上gamma
有什麼用..
Q2:imadjust(im,[a,b],[c,d])中的a,b,c,d是怎設定的?

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]---不太能理解這句。


Q2:

下面指令用空白隔開.25、.5、.75等等參數的意思是??---[p.76]


WEEK7

1.後來發現圖片是uint8型態的,但是不需要轉換double型態還是可以進行運算,到底是為什麼? 打上b=b+128是可行的,沒有出現 ,還是因為圖檔的不同???


2.仔細看之後發現

110那條線(4的那點)應該畫在5不是嗎??? 還是我解讀錯誤了...p.73



解決的問題有

3. th=imadjust(t,[],[],0.5); 0.5是要做什麼的? p.74
仔細看了之後,0.5應該是gamma值吧


心得:
這次又仔細看了之後,發現有很多上周都沒看到的地方,例如gamma值那就沒有看很清楚.
還友直方圖那,經過老師上次的講解+後來又自己再讀一次,才比較了解這些圖怎麼畫的...



因為之前只修改在WEEK6而已

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
CH4主要是用一個函式把圖丟進去,就可以把圖片做點處理
做過點處理的圖片可以變亮或是變暗,imdjust可以抓到圖片的gamma值 並且可以對作gamma值得改變,其實就像是上面的函式一樣,把圖做gamma運算時可以改變圖片的明亮度
imcomplement把一張圖value的0變1,1變0,也就是把圖片作成了相片的底片化
plot中可以把兩個陣列(或是兩張相同的圖片)做成一個函式圖 ,做成的函式圖是用兩個函式
histeq則是像之前所說的可以把一張圖做成histogram圖,可以看出這張圖片的每個像素的色彩質

week7



















原始圖


這次再重新讀一次第四章,瞭解了第四章運用了很多的方法有
加減乘除和補色與影像直方圖的方式都可以讓圖形的影像變暗
和變亮,也實際去用了運用了直方圖擴展法來顯示圖的明暗度。
而我這張圖是用了+128和-128的圖去修改他的明暗度,
讓我發現了假如是用+128和-128是直接去改全部圖片的明暗,
而不是去改某小部分所要的明暗度,而假如是去用直方圖的寫法的話
就可以去更改我所要一張圖哪些小地方要亮要暗。
這樣也可以做得很好看。

WEEK7_再讀CH4

閱讀心得:
第四張的標題就是點處理,很明顯的可以知道,他針對由某些點的改變來達到所要達到的目的,而經過某些的計算可以是的圖片看起來比原圖黑或是比原圖亮。


在下指令修改照片時,我們也可以透過imadjust去取的gamma值,讓我們可以由他的分布去了解此張照片是否要亮點或是暗點。


而課本也利用補色(imcomplement),來達到相片附片的效果,也就是說當我們下X=imcomplement(c),會讓圖C看起來有底片的感覺。


但我覺得還是有一點在實作上感覺怪怪的,課本上有提到需要注意到資料的型態,但我發現就算是型態沒符合所要的,一樣是可以執行,型態好像在執行上沒有太大的影響或需要去注意他,是MATLAB幫你處理過了呢?還是?




而利用imcomplement可以讓照片有負片的效果,那如果要改變回來呢?需要輸入什麼來執行?



..........................................................................................(執行的圖片未貼)
待續

WEEK7 CHP4-Histograms

1.本章節是指點的處理
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(影像直方圖延展)
利用一線性函數將本來gray level分佈太過集中的圖片分散開來
使一張過黑而難以辨識的圖片輪廓變得清晰
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

由於心得太過龐大所以放置在我的blogger

問題擺這裡

1. page 69 在執行1-m和~m之後我的圖片只呈現了一片黑,無法顯示課本所說的底片狀態
==執行後=>
2.當我使用下圖來執行 imshow(b),figure,imhist(b),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{:});


3.同樣也是上面那張圖片的問題,當我執行imadjust後執行plot(b,bh,'.'),axis tight,會顯示以下錯誤,好像是說我的圖片不是2維矩陣,所以不可以執行,但是不知道怎麼判斷一張圖片是2維還是3維.

錯誤:
??? Error using ==> plot
Data may not have more than 2 dimensions

4.page 80 and 81

是關於imdivide與histeq這2個指令的功用,imdivide像是在壓縮圖片的Histogram,所以我嘗試執行an=imdivide(a,0.5),雖然圖片變明亮但是顯示的Histogram卻跟我想的不一樣,當執行histeq這個指令時得到的圖片與an=imdivide(a,0.5)得到的圖片相同,但是Histogram卻差很多,所以對這2個指令的功能很疑惑.
an=imdivide(a,4):Histogram:

ah=histeq(a):Histogram:

WEEK7_再讀CH4

閱讀心得:
發覺到在轉換的過程中,要極度的重視,資料再轉換的時候,型態的變換會直接的影響到值,如果此時改變的型態,在改變型態之前是超出改變之後的範圍的話,那道時印出來的圖片會呈現的很奇怪。
利用一指定像素周圍的灰階值,可以間接性的改變指定像素的灰階值。

這分別是+128 , -128之後的圖片





背景圖片有一堆數字是在我輸入
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

在做67頁的例子時,沒發現課本出現的問題(型態錯誤的問題),上禮拜就已經發現
不過我猜想是新舊版本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應該分佈較為平均。
而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

CHAPTER 4
4.1 Introduction  
image processing可分為這三項
1. Transforms.    
轉換整張圖的像素灰階值。  
2. Neighborhood processing.    
改變一個特定相素的灰階值,不過虛要有周圍相素的灰階值做參考。  
3. Point operations.    
改變一個特定像素的灰階值,可單獨做運算,故較符合成本,本章也都以此技術討論之。
4.2 Arithmetic Operations
設一函數f(x)
若將函數f(x)加上常數c,所載入的圖片將變亮。
減掉常數c則變暗。
利用乘除也可改變亮度
例如將函數f(x)乘上常數c,所載入的圖片將變亮。
除上常數c則變暗。
不過利用乘除改變亮度是比較理想的方法,因為這能使x的值固定在0-255之間,圖片輸出時比較不會失真。
4.3 Histogram
histogram可以顯示色彩明亮的分布。一般的照片中間調的分布密度會最高,也就是大約會呈平均分布,當然也有例外的情況,這個時候就用Histogram Equalization來解決色彩分部不平均的問題,經過處理後的影像將會是高對比比較適合肉眼觀看的影像。

4.3.1裡有介紹如何將histogram延展,就是改變GAMMA的值,如果gamma值小於1時,色彩對比度不高;當gamma值大於1時,色彩對比度高,人眼看起來較為鮮豔。
而我們在MATLAB使用imadjust(im,[a,b],[c,d]);
來改變GAMMA值。
plot()比對修改前後之矩陣而劃出的GAMMA函數圖。

4.4 Lookup Tables
Point Operations可使用Lookup Table來表達,以方便處理。

最後,我要問一個問題,Histogram Equalization做越多次會對圖越有用嗎?
這是我做出來的試驗:





未做任何處理的Histogram Equalization。







做一次Histogram Equalization的結果。







做二次Histogram Equalization的結果。


做三次Histogram Equalization的結果。
雖然做一次Histogram Equalization後,Histogram的分布都差不多,但仔細看一下最左邊還是有稍微的不一樣,在做第2次Histogram Equalization的時候,會多一條線,可是第3次的結果又變回跟第1次一樣的圖,所以想問一下Histogram Equalization做一次後,Histogram的值是否會改變呢?

Week7_重讀Chapter4

實作心得:
1.將圖片加128和減128


2.將圖片除以2倍,乘以2倍及除以兩倍再加128

3.用imhist 畫出圖片的Histogram



4.用imcomlement 將圖片值轉換成補數

在實作的過程中我發現這一章的內容是在介紹,如何利用指令去改片變圖的型態和值!!!
再看書過程中 ,有些指令真的看不泰懂!!! 我就會照著老師所說的去實作看看!!!
有些指令我再實作時會了解他的公用並且會去探討指令其他的值改變的情形!!!

問題 :
再閱讀時閱讀到p73中的imjust這個指令不太懂它所續續的指令意思.於是我就實際操作去觀察它的變化.

第一張圖是imadjust(im,[],[]);是原圖!!!
第二張圖是imadjust(im,[],[],0.5);
第三張圖是imadjust(im,[],[],1);
第四張圖是imadjust(im,[],[],1.5);

結果我發現圖片漸漸變深,這個函數的最後一個所輸入的值,類似於將圖片所有的值同乘以某一個倍數!!!

下面這張圖示我去將這司張圖的陣列叫出來比較:

但是看了比較之後的陣列又推翻了我所猜想的...............他最後的值應該是利用每一個公式去加深圖片或將圖片變淺!!!

然後我對imjust指令中(im,[],[1,0])不了解,所以我也去操作一次

由兩張圖片比較之後我發現[1,0]這個類似於補數的功能,於是我叫出她們兩張圖的陣列來看:


發現它的功能就類似於imcomlement 將圖片的值換成補數!!!

但是我依然不明白在[1,0]前面的[]公用為何!!!所以我將它是著也改成[1,0]看看,但是出現了錯誤

於是我有試著將前面的 [] 改成[0,1]看看
第一張圖是[][]都不改變
第二張圖是[][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

實作心得與問題

  • P67 發現與課本不符的情形

似乎是版本不同的關係,7.4不會有錯誤出現,那麼課本中提及的'+'的定義問題還存在嗎?










  • P71 axis tight
左圖是用了axis tight的結果,histogram以比例縮小顯示.

右圖沒有加上這個指令,histogram超出範圍不能看出正確的灰階出現頻率數值.


  • P74 imadjust error
試著改變imadjust(im,[a,b],[c,d])的[]中數字,發現c,d可以任意更改為0~1之間的值,並產生顏色深淺、對比的結果.

但是a,b為不可更改,執行指令會發出error警告,想應該是a,b為原圖的histrogram灰階範圍,所以不可更動.



  • P75 gamma

左上是gamma改變的效果,右下是只用imadjust的效果.

gamma指令會將圖片變得更清楚?呈現對比?不知道該怎麼說明他的變化.




  • P80 imdivide
這是上禮拜我提出的第二個問題.
好吧,他和grayslice不相同,而且還會有一個error,似乎是說imhist不能用於uint8這個型態?

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程式處理過後













<==p83程式處理過後

<==原圖