2008年10月31日 星期五

CH1~3(事實上我是補充CH3沒看完的地方)

3.5
Quantization and Dithering(量化跟混色)
Quantization:
(1)The number of grayscales used to represent the image
(2)most image will have 256 grayscales, which is more than enough for the needs of human vision (簡單的說,256灰階值已經超過足夠(超過)人眼的判斷)
方法:
Uniform Quantization:
To represent an image with only n grayscale, we divide the range of grayscales into n equal (or near equal) ranges and map the ranges to the values 0 to n-1.
(將圖片的陣列分為n小塊來進行區隔其數值範圍為0~n-1)
也就是當設定n=4作分隔的話,256(256灰階度)/4=64,也就是64個灰階度為1區塊
原始數值=>區塊=>計算完成後的值
0~63=>0 =>0
64~127=>1 =>64
128~191=>2 =>128
192~255=>3 =>192

使用語法:
(1)f=floor(double(x)/64);
q=uint8(f*64);
(利用此方法很容易的就將數值區分為各區塊 =>floor的用法為取比此數小的最大整數)
問題:
為何不使用
f=floor(x/64);
q=uint8(f*64);
自行解答:
在使用上uint8格式下的矩陣,會在除過以後自行”四捨五入”因而造成不一樣的結果(雖然看似差不多,但其使用上就沒辦法照上面的方式區隔,而且會出現超過255的數值)
簡單的說就變成以下方式
原始數值=>區塊(以下為大約)=>計算完成後的值
0~31=>0 =>0
32~127.49=>1 =>64
127.5~95.99936=>2 =>128
96~223.999936=>3 =>192
224~255=>4 =>256(超過灰階值範圍!!)
(一直用計算機計算@@)
以下為執行結果
“左”為從頭到尾都不轉換影像格式的(明顯亮度較亮)
“右”為有轉換為double再轉換回來的



(2)grayslice
ww=grayslice(x,4);
imshow(ww,gray(4))
(當數字越大,劃分的區塊越多,原圖也越接近)

DITHERING:
(1)Refer to the process of reducing the number of colors in an image.
(2)Dithering is necessary sometimes for display, if the image must be displayed on equipment with a limited number of colors or for printing.
=> Halftoning :
Representing an image with only two tones.
Method:
(1)dealing with such false contours involves adding random values to the image before quantization.
(2)Equivalently, for quantization to two grayscales we may compare the image to a random matrix r.
( The trick is to be devise a suitable matrix so that grayscales are represented evenly(平均地) in the result.)
=>For example(以棋盤的方式表示)
=>一個亮度約在127附近的值,其棋盤內的灰階度黑跟白很均勻的分布
=>較黑的值則有更多黑色存在於棋盤上
=>較亮的則白色較多
(詳細棋盤圖案請看Page 57,fig.3.13)
Dithering matrix: (兩種dithering matrix)
D=[0,128;192,64]
D2=[0,128,32,60;192,64,224,96;48,176,16,144;240,112,208,80]
使用方法:
簡單的說就是將圖的陣列與dithering matrix作比較,當小於等於的則取為零
以下為取得的圖(左圖為使用D去分析,右圖為使用D2去分析)
D=[0 128;192 64];
r=repmat(D,128,128);
x2=x>r;imshow(x2)
figure,imshow(x)
D2=[0,128,32,60;192,64,224,96;48,176,16,144;240,112,208,80];
r2=repmat(D2,64,64);
figure,x4=x>r2;imshow(x4)
D=[0 128;192 64];
r=repmat(D,128,128);
x=double(x);
q=floor(x/85);
x4=q+(x-85*q>r);
figure,imshow(uint8(85*x4))
上圖的結果我還不是很確定原理,好像是在加上前面量化的方式,
也就是使q量化分成了0~85個區塊,再進判斷,由Page 58的公式可以知道,他有另外保留一個q(I,j)再加上用dithering matrix判斷過的值,使圖變得更均勻
下方為只利用量化的方式呈現的圖
當沒使用dithering而使之圖變更均勻時,圖明顯較暗(所以加上dithering的效果,才會有如此的變化) =>這地方有些我想的比較難解釋出來= =

ERROR DIFFUSION(誤差分散?)(這邊不太確定,還在研究中)
=>Image量化為兩部分時,我們會考慮到灰階數值跟量化數值上的誤差
=>當量化灰階數值0~255時,會出現一些小誤差,在128附近則有較大的誤差。
=>因此將其誤差分散至各周圍的數值中

=>可使用Floyd-Steinberg Ditering 去分析(??)




心得與問題:
(1) 這次的作業對我來說有點難度,感覺有些東西要看都看得差不多了(雖然有些還不是很熟………..只是照目前的狀況,好像沒時間慢慢再看一遍了@@),所以我先放上禮拜說的CH3沒看完的部分的”重點整理”。



(2)剛剛看過了一些修同一門課的同學發的內容,我想關於影像處理作業的問題,我覺得因人而異啦,事實上心得跟問題我也沒寫很多,我的習慣大部分都是一鼓作氣把課本內容看過去,我對於自己是否有問題方面反而比較少去注意(有時候覺得自己懂了,有時候是沒想到問題),因此我就把這個當作我的整理,對我來說,每周作業是可以盯著我讀書的方式(依我的習慣,很容易不去看,而且沒出作業的話,我覺得我會沒打好基礎就直接從第四章開始讀了),也許有人認為把課文內容打出來所以分數才會比較高的作法並不合理,因為寫少的人並不代表真的不認真(認同),不過分數也跟學生互評的習慣有關(不過認為自己有收穫才是最重要的吧)。

.......... 以上為個人的想法 (有點文不對題)

(3)老師,抱歉這次那麼晚才發..........辛苦你了= =
(4)之前主要是為了學習影像處理的相關知識而來選資工系的選修課程,老師上課是跟以往其他老師教學的方式不太一樣,是以導讀的方式帶過課程,再讓學生回去讀,一開始讀起來是有點吃力(不過跟以前讀電子學比起來速度稍微快了一點),後來漸漸讀的快多了,雖然在部分句子上需要多花一些時間去理解(英文還是要加強加強),但是集中精神慢慢看過去大致都還可以,對於有些不懂的地方老師也會在上課的時候進行解說,也因此更容易上手,在MATLAB上面,之前我在暑假的時候有花點時間去讀過MATLAB7的內容,所以在這堂課上面並不會在程式語言方面感到太吃力,只是在接觸一些沒碰過的語法時候要稍微跟理論研究一下,感覺這門課蠻有收穫的。

問題:
(1)關於Spatial Resolution那邊的語法imresize的運算法還是搞不太懂,不太清楚如何在縮小圖像的時候取新的數值(想了一些用法,但是都不太對),感覺又跟課本說的不太一樣,希望這部份能有人解答
(2)ERROR DIFFUSION裡面使用Floyd-Steinberg Ditering的方法???

沒有留言:

張貼留言