- P71 axis tight
- P74 imadjust error
但是a,b為不可更改,執行指令會發出error警告,想應該是a,b為原圖的histrogram灰階範圍,所以不可更動.
- P75 gamma
INTRODUCTION TO DIGITAL IMAGEPROCESSING
Chapter 4: POINT PROCESSING 再閱讀
◈ 詳細閱讀
這是上禮拜閱讀時寫的紀錄,這禮拜再閱讀後修正一些敘述。(純粹是
怕過了幾個月後忘記這本書所有內容時給自己的快速回憶紀錄,在此借
以做為詳細閱讀的證據。)
◈ 實作心得
① Page 67/指令b1=b+128;的錯誤
上星期恰巧有實作到這個指令的發現:MATLAB 7.4版已無課本上所說的錯誤。
② Page 69 最後一段/double的誤會
"If an image matrix m is of type double and thus its gray values are in the range 0.0 to 1.0."這句話是說如果有一個矩陣m的型態為double,因而它的灰階值是介於0.0至1.0之間。立刻想到的是要將一個uint8矩陣的形態轉為double必須執行double(m),在這裡又忽然想起page67的指令"b1=uint8(double(b)+128)"裡的double(b)並沒有真的將值轉為0.0~1.0間,只是將型態改為double而已。要真的轉為0.0~1.0之間應該要執行"im2double(m)"才是。於是花了幾分鐘在驗證這句話。結論是這句話是不是表達錯誤(?),我覺得"型態為double"與"值因此就介於0.0至1.0",這之間不該是因果關係。萬一這裡的"thus"不是翻譯為"因而",那一切就是我無聊地想太多了。
③ Page 71/axis tight指令
剛好有看到一個人提出了這個指令在做什麼的疑問。本週就花了一點時間弄清楚它做了什麼。"axis tight;"是改變縱坐標的單位刻度。(假設固定histogram的大小為100*100(cm),假設原本某特定圖片的histogram縱坐標每10(cm)代表100次。使用axis tight;後,histogram的大小依然固定為100*100(cm),但該特定圖片的縱坐標每10(cm)改為代表120次)。目前尚未花時間想它的目的。直覺大概可能是像我們之前畫histogram會想要讓histogram的最高點能在histogram框內諸如此類的目的。
④ 函數圖
花了一點時間妄想用plot()顯示FIGURE4.10等函數圖。需要找一下資料看MATLAB能否或如何畫出函數圖。
⑤ Page 76/MATLAB判斷式find()
原本想實作page70的solarization,因為必須大於128才改變值,因此需要一個判斷式先判斷是否為128。這個判斷我先用了if end判斷,後來又改用find()判斷,但結果就是奇怪。由於是天還沒黑做的測試,腦中已不敷記憶,待會會再完整測試一次。如果還是奇怪的結果,再附上奇怪的程式碼說明。
◈ 問題 :
上星期提出的問題 ④再閱讀後已自行理解:
目的是讓所有灰階值的數量能平均地分布在256個灰階上(例如可能前五個灰階值的總出限次數要佔全部總出限次數的2%,前十個要佔4%...),做法是第i個灰階的數量直接搬到第[(n0+n1+...+ni)/n]*(L-1)個灰階上這樣的方式。
⑥ Page 74 下方的gamma運算式/gamma運算式
如果說是從[a b]調整至[c d],我不懂的地方是"x-a"這部分,不知道x代表什麼。(目前覺得可能可以經由自己實驗來求解。但還是暫時先提出這個問題。)
⑦ Page 76/histogram equalization的idea
這段文章是說histogram equalization的idea是"change the histogram to one",就是histogram裡的每個bar都是同樣高度。但之後又說了"In practice this is generally not possible.",上星期宛諭有提到這個我沒注意到的問題,所以再閱讀時又更仔細看一遍,不知道為什麼這裡會說實際上不可行。(目前覺得這可能又是可經由自己寫程式來求解。但還是又暫時先提出這個問題。)
⑧ Page 81 最後一段/離散與連續
上星期沒提到這一段是因為覺得需要先自行看一下機率與統計課本,再仔細閱讀後發現他是在說明離散ˋ連續的histogram。
第一句"在equalization後,沒有histogram是uniform的,是因為圖片離散的特性。",如果沒有翻譯錯的話,不知道uniform的histogram與圖片離散特性之間的關係。在這之前也不知道什麼是圖片離散的特性。
3. th=imadjust(t,[],[],0.5);
0.5是要做什麼的? p.74
4.2讓灰階圖片的數值作加減乘除運算,讓圖片可以變亮或變暗,也可讓圖片轉換成本身的補色
INTRODUCTION TO DIGITAL IMAGEPROCESSING
Chapter 4: POINT PROCESSING
◈ 問題 :
① Page 69 第三小段/Note
"Note in particular the edges..."不確定這段文字所指的消失的右邊是不是我
觀察到的那部分。
[已解決]
② Page 72/最後三行outside this range...
"gray levels outside this range are either left alone or transformed
according to the linear functions at the ends of the graph
above."這段話是想說"超過這個範圍最左邊的就沿這這個範圍最左邊的
值,右邊同理(參page FIGURE4.10)"這樣的結果嗎?
[已解決]
③ Page 75/plot()
因為同時有原矩陣t與經過imadjust()調整過的th矩陣兩個參數,不知道這個
用plot()畫出的圖是兩者的比較還是?
[已解決]
④ Page 78/最上面的算式
如果是"(n0+n1+...+ni)/n"還可以理解為前i個灰階值出現的總次數平均分配
到所有灰階值,但不知道為什麼後面還要乘以L-1?(這裡的i是灰階值,ni是出
現次數,L是總灰階數。)
[已解決]
⑤ Page 79/最後三行
"Notice the far greater spread of the histogram. This
corresponds to the greater increase of contrast in the image."這
段話是說擴散最大的地方,也就是對比變化越大的地方。是這樣解讀
嗎?
[已解決]
而Floyd-Steinberg、Stucki和Jarvis-Judice-Ninke主要不同是誤差擴散的範圍與比例。
以課本59頁當例子:
- x 7
3 5 1
x表示目前的處理點。當該處理點找到最接近色時,便將該點顏色與最接近色顏色的誤差值,以7/16、3/16、5/16、1/16比例擴散到鄰近的點。
Floyd-Steinberg的抖色方法快速而且效果不錯。另外Stucki使用了更多的點參與誤差擴散,以得到更好的效果。不過當誤差擴散的範圍變大, 需進行大量的整數除法和乘法的運算,導致處理的速度會變慢,因此對於較大的影像而言,一般很少採用這個方法。
最後Jarvis-Judice-Ninke和Stucki沒太大不同,主要是在影像不同情況下,就能比較出他們的差異性和優缺點。 不過Floyd-Steinberg應該是相當常用的抖色方法吧!