2007年11月7日 星期三

Week 08 - Chapter 5 NEIGHBORHOOD PROCESSING

主題 :

 INTRODUCTION TO DIGITAL IMAGEPROCESSING
 Chapter 5: NEIGHBORHOOD PROCESSING

詳細閱讀


______________________________


實作心得
 ①
  ▪ x = magic(n);
   - 形成一個邊長為n的方形矩陣,裡面的值填入1, 2,..., n*n,需
    滿足各列、各行、各對角線的值的總和都等於
    (1+2+...+n*n)/n。
    (試驗1,3,4,5都符合,2不符合)
  (由於分心了一陣子,所以本章的程式尚未實作完)


______________________________


問題 :


 ① Page 87, 89/filter的定義
如page 87倒數第六行所述,filter是mask與函數的合體,那麼page 87最後兩行這裡相乘又加總的運算是屬於一個filter裡函數的部分?還是那是每個圖片與linear filter做filtering的運算嗎?再看page 89第一行是寫Spatial filtering的三步驟,第二步驟裡有提到filter elements相乘再加總的運算,如果filter element是mask+函數得出來的值。那麼根據標題與第二步驟是不是就可以確定這個相乘又加總的運算是linear filtering的步驟而不是filter裡函數的部分?再看page 92,如果說相乘又加總的運算是linear filtering的步驟而不是filter裡函數的部分,那麼這裡所說的averaging filter就可以驗證這句話,這裡的filter是1/9*mask,之後做filtering時再相乘又加總。
   [還是覺得有一些小細節讓我質疑]

 ② Page 90/magic(n);
▪ x = magic(n);
 - 形成一個邊長為n的方形矩陣,裡面的值填入1, 2,..., n*n,需滿足各列、各行、各對角線的值的總和都等於(1+2+...+n*n)/n。
以上是我自己試驗得出的這個函數的功能,試驗1,3,4,5都符合,但2卻不符合,是功能判斷錯誤還是2真的就是個例外。



 ③ Page 93 上一節的倒數兩行/zero padding的影響
"introducing unwanted artifacts"是之後所說的圖片邊緣會呈黑色嗎(參FIGURE5.4(d)?

 ④ Page 98 第一段/high-pass filter的係數總和是零
無法理解低頻的值相似與總和是零有什麼關聯。
   Ans:
     低頻的話,filtering後的值為零。假設原來的值為a、b、c、d、
     e、f、g、h、i,mask的值皆為x,filter:ax+bx+...+ix =
     x(a+b+...+i)必須為零,所以a+b+...+i為零。


 ⑤ Page 99 兩張圖/Laplacian filter、Laplacian of Gaussian filtering
這兩張圖是示範high-pass filtering,但我不知道這兩張圖各代表什麼。對Laplacian filter的功能尚未查資料。且後面的章節有提到Gaussian filter是low-pass filter,所以不知道Laplacian of Gaussian filtering又是什麼?

 ⑥ Page 102 第二點/Gaussian Filters的重要性
上面提到edge-detection是在high-pass filter的部分,進而思考到這裡會是說因為Gaussian filter是讓圖片模糊,所以可由Gaussian filter反向思考到與邊緣清晰有關的edge-detection演算法嗎?

 ⑦ Page 102 第四點/Gaussian Filters的重要性
這裡的convolution是像前面的spatial convolution一樣也是旋轉180度?所有的convolution都是?所以才會造成這裡所說的兩個Gaussian的convolution會是另一個Gaussian?
 [希望解答]
 
註:因為不知道"希望課堂討論"是指純討論還是有包含只解答課堂討論的問題的意思,所以這裡先不寫"希望課堂討論",之後再作刪除或修改。
 

week8 ch5

p90這頁的圖中框的位置好像有錯誤,我的猜想應該是和之前的4-4的那個程式碼一樣,他認為是以0為開始導至於(1:3) (2:4)的他框在中間本來的應該是要往左一格.

p97 high-pass filter是比high-frequency components還或是比low-frequency components還低但是該怎麼分辨比他高或是低呢?

Week8 Chapter5

※Chapter 5 Neighborhood Processing
※由於上週已經閱讀完畢,本週針對於略嫌不足的地方加強
 故不考慮新增blog文件,但我的blog細節有增加
※目前只考慮放置問題於此,詳細的細節請看 前往
※↑ @2007/11/14更新

Questions:
1. Page 93,94
  關於filter2的"same","valid","full",
  課本有些簡單的範例,例如在x的四周補0後使用"valid"的效果
  與直接使用"same"的效果相同
  知道每個單字出現的範圍大小,但實際計算方式仍不太了解
  →已知課本範例結果"valid"3×3,"same"5×5,"full"7×7

2. Page 96,97 5.3.1
  關於「Separable Filters」
  示範把陣列分離成1×N與N×1
  並提到Separability can result in great time savings.
  關於這邊,語句上的翻譯是節省時間
  而關於節省,到底是節省怎樣的時間?
  抑或是節省記憶體的空間呢?(是否有此項功能)

3. Page 99 Figure 5.5 的解說
  In each case, the sum of all filter element is zero.
  意指,構成上述圖片的fliter元素相加總合為0
  在網路上搜尋了關於Laplacian的事蹟,
  或許這問題不是很重要,但仍然好奇該矩陣是如何構成?

4. Page 108 (應該放到課本找錯區嗎= =?)
  f=[-1 -1 -1;-1 11 -1; -1 -1 -1]/9;
  xf=filter2(x,f);
  imswho(xf/80)
  根據上述指令操作,只有出現一個小點(約3×3大小)
  但當我將xf=filter2(f,x); //x與f的位置對調
  就可以show出圖片大小的圖

5. Page 111(應該放在課本找錯區??)
  假設有一張圖片存在x裡面
  原本→cmax=nlfilter(c,[3,3],'max(x(:))');會不能用
  修改→cmax=nlfilter(x,[3,3],'max(x(:))');才能用
  →cmin亦同
  但當我將一張圖片大小與x相同的圖片塞到c裡
  就可以用課本上的指令,那麼該算是筆誤還是?
  如此一來,是否意指cmax=nlfilter(x,[3,3],'max(x(:))');前後變數該相同?

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是直接去改全部圖片的明暗,
而不是去改某小部分所要的明暗度,而假如是去用直方圖的寫法的話
就可以去更改我所要一張圖哪些小地方要亮要暗。
這樣也可以做得很好看。