2008年11月14日 星期五

CH4

Ch4
Point Processing

Image-processing divided into three classes:
1.Transforms:
=>A transform represents the pixel values in some other, but equivalent form.
(將像素值轉換為其他數值但是等效的格式)
=>allow for some very efficient and powerful algorithms
(允許一些功能強大又有效的電腦程式或數學的處理流程)

2.Neighborhood processing:
=>改變像素的灰階程度與周圍的像素值有關

3.Point operations:
=>A pixel’s gray value is changed without any knowledge of it’s surroundings.
=> Point operations are the simplest
=>contain some of the most powerful and widely used of all image-processing operations.
(在所有影像處理運作運算上Point operations含有一些強大且廣泛的使用)

Arithmetic Operation
=>確定數值範圍為0~255時可改變輸出的影像亮度
=>(1)利用一簡單公式y=f(x) (其中f(x)含有數值範圍為0~255)
=>(2)將其公式進行相加或相減一固定數值y=x+(或-)C
=>(3)或是乘一固定數值y=Cx
=>(4)”clipping”~修剪數值為
=>取得結果數值將會被調高
(當加128則127以上或等於127的數字均變為255 ,減128則小於128或等於128的數值變為0) =>課本P67頁Fig.4.2

使用語法
b=imread('blocks.tif');
b1=b+128;


(沒有錯誤!!@@,版本又不同了嗎?是因為比課本新版嗎??)
當使用b1=uint8(double(b)+128)
結果相同沒錯誤

相加想減數值可使用下列語法
b1=imadd(b,128); %相加語法

b1=imsubtract(b,128) %相減語法

上面兩個也可以使用於兩張圖的相加以及相減
x=imread('rice.tif');
y=imread('engineer.tif');
xy=imadd(x,y); %兩張圖相加
figure,imshow(x),figure,imshow(y)
imshow(xy)
(以上為使用的圖X(左),Y(右))
(相加後的圖XY,很明顯看出結果)
這時候查看圖的數值(好像也是直接超過255就等於255 ,跟我以前在圖書館借的一本講影像的書說的不同=>那邊是說相加以後由0~255轉為0~510,因此需將0~255跟0~510兩個對照取新的數值出來)

在Arithmetic Operation上有講到相乘相除的方法
在MATLAB則可直接使用相乘相除,或使用語法
相乘: (亮度變亮)
bb=immultiiply(b,2);

bb=b*2;

相除: (亮度變暗)
bb=immultiiply(b,0.5);

bb=b/2;

(均使用immultiiply語法)

Complement(補數):(簡單講就是負片)
=>A grayscale image is its photographic negative.
MATLAB語法:(設圖片陣列為m)
當圖片格式為double時(圖片數值範圍為0.0~1.0)
>>1-m;
圖片格式為binary時可使用
>>~m;
圖片格式為uint8可使用
>>bb=imcomplement(b);

Histograms(直方圖;析示圖<=析示圖的說法很少看到)

=>A graph indicating the number of times each gray level occurs in the image(顯示在圖片裡面各灰階值出現的次數)
=>We can deduce a great deal about the appearance of an image from its histogram.
(我們從直方圖可以推導出圖像顯示的灰階度分配狀況)
=>(1)dark image:
主要分布在直方圖的低數值區
=>(2)bright image:
主要分布在高數值區
=>(3)well-contrasted image:
各灰階度數值均勻分布
可利用語法
>>imhist(b) %此為使用圖的語法,當不是使用圖形陣列時(其他數直處理時使用hist)
(課本中加上的axis tight為將圖X軸Y軸弄得較密一點,可使數值較確實呈現,不易有因為超過座標軸範圍而遺漏的部分)

Histogram Stretching(Contrast Stretching)
=>看不太懂i如何轉換為j的(應該說是看不懂公式如何來的)
=>indicates an image with greater contrast than the original
(轉換後的圖像會比原圖有更高的對比)

語法imagjust
=>可增加圖像之對比,使圖像變得更為清楚
>>x1=imadjust(x),imshow(x1),figure,imshow(x)


(左圖為原圖影像,右圖為使用imadjust增加對比程度的圖)
(後面解釋的還不太清楚,後來看懂以後補上)

對比相關介紹網址:
http://zh.wikipedia.org/w/index.php?title=%E5%B0%8D%E6%AF%94%E5%BA%A6&variant=zh-tw

直方圖均衡化相關網址:
http://zh.wikipedia.org/w/index.php?title=%E7%9B%B4%E6%96%B9%E5%9B%BE%E5%9D%87%E8%A1%A1%E5%8C%96&variant=zh-tw


目前看到課本P74,剩下後來補上!!

11/14
這禮拜老師講解了一些關於第四課的內容,因此不懂的地方也得以解決,像是Histogram Stretching是將對比變明顯,使用方法即是自行設計一個新的拉寬之範圍(如圖fig 4.9<=此為自訂),並計算出新的各數值分布 imadjust指令使用方法 =>imadjust(im,[a,b],[c,d]); %參照fig 4.10改成對比較高的影像
不過此語法不能變成像fig 4.9那樣(小於a的數值以及大於b的數值線性增加),只能像fig. 4.10那樣低於a變成c或是大於b的數值變成d(平行)
當使用的起始點a,b或是c,d為[0,1]=>則縮寫為[](課本中使用imadjust(im,[],[])基本上沒任何效果=>等於沒變)
使用imadjust(im,[],[1,0])時,出現的結果則是原來圖的相反結果
x=imread('emu.tif');
x3=imadjust(x,[],[1,0]);
imshow(x),figure,imshow(x3)
figure,imshow(x1)

圖左為c,d使用[1,0]所產生的結果,圖右為原圖

gamma:
=>describes the shape of the function between the coordinates (a,c) and (b,d)
(描述座標(a,c)到(b,d)的形狀)
=> a linear mapping is used( gamma=1)
=>concave downward (gamma<1)>concave upward(gamma>1)
公式為:

公式中的1/r即為gamma (這邊還不是很懂,只是跑一跑以後看到是這樣的結果)
Ex:
x=imread('emu.tif');
x4=imadjust(x,[],[],0.5);
imshow(x),figure,imshow(x4)
figure,plot(x,x4,'.'),axis tight
(x軸只到63=>x的最大值為63)
當r>1時
x5=imadjust(x,[],[],2);
figure,imshow(x5)
figure,plot(x,x5,'.'),axis tight
(x5明顯變黑)
A PIECEWISE LINEAR-STRETCHING FUNCTION
(分段線性拉伸函數?)
=>建置histpwl
=>利用find找出符合所設置各區段a、b的數值位置並利用下方公式來進行轉換,求出新的分布


Histogram Equation(直方圖等化)
=>Sometimes a better approach is provided by histogram equalization
=>entirely automatic procedure
=>The idea is to change the histogram to one that is uniform. (change=>every bar is same height)
=>
histeq語法
利用總灰階值與各灰階值出現總次數相除((L-1)/n),取得每一區塊占的數量
(ex 課本p78 =>15/360=24 =>每個區域24個數量並以此區分(參考P78表格))

imdivide 語法
=>imdivide(im,n)
=>將im中的數值除以n值

(課本P80那邊用imdivide好像沒甚麼作用(跑出來圖片是一樣的)<=直接用histeq就好了吧@@) Lookup Tables(LUF, 查找表): =>point operations can be performed very effectively
=>利用LUT將索引號跟輸出值做比對,不需計算直接取得計算過的值
=>在較複雜計算過程上比較有用,如果使用的算式太過簡單,則會占過多空間。

LUT相關介紹:
http://zh.wikipedia.org/w/index.php?title=%E6%9F%A5%E6%89%BE%E8%A1%A8&variant=zh-tw


心得與討論
(1)期中考結束以後開始進入報告地獄,事情會越來越多,有點擔心看不看的完(要開始要進行短時間看完一課的情況了)
(2)大致算是看完了,這次後面有一些看不太懂了,但是經過老師的導讀後,目前是沒問題

沒有留言:

張貼留言