星期一, 11月 26, 2007

week10_CH6

Chap6 IMAGE GEOMETRY 影像幾何學
 
 我們可能在很多情況下會去改變影像的形狀,大小或方向.
 可能想符合一個特別的位置或for printing而放大影像;
 可能為了可以放在Web page上而減少它的size.
 或希望透過旋轉調整原本不正確的角度或simply for effect.
 旋轉和scaling都是affine transformation(仿射的變換)的例子,
 其中線轉變成線,特別的是,平行線在轉變後依然保持平行.
 非仿射幾何轉換包含warping(彎曲歪斜),但在此章不討論.

6.1 Interpolation of Data
  從一個簡單的問題開始:設有一4個數值的集合,我們希望延展成8個.
  除了頭尾的原點和延展後的點會相同之外,其餘的點都不同.
  interpolation:根據周圍數值估算出函數值.
  有以下三種方法:
  (1)Nearest-neighbor interpolation:
    每個延展後的點和它距離最近的原點相同
  (2)Linear interpolation:
    每個原點間用筆直的線相連,延展後的點對應到的距離即是.
  (3)Calculating linearly interpolated values:
    設兩原點之間一延展點為F,則(F-f(x1))/λ=(f(x2)-f(x1))/1
    [幾何相似定理].

6.2 Image Interpolation
  從線改為看平面,創一個4x4影像經過interpolated後成為8x8影像.
  
  P122&P123算式最後導出f(x',y')稱為bilinear interpolation.
  現在可以更容易scaling影像了.給一影像和一個scaling factor,
  或一個我們要scale的size,先創一個符合要求大小的矩陣.

  給一(x',y')矩陣,我們可一點接一點的從(x,y)對應周圍的點經由
  nearest-neighbor或bilinear interpolation計算出一個
  interpolated數值.
  
  MATLAB中有函數imresize可以做到上述動作,可被表示為
  resize(A,k,'method')
  其中A是一個影像的型態,k is ascaling factor,method是
  nearest或bilinear.
  
  實做後發現nearest-neighbor有邊緣呈現鋸齒狀的效果.
  bilinear interpolation雖然平坦多了,但有程度上的模糊.

  Interpolation不能預測數值:不能從什麼也沒有的情況下創出data.
  只能猜出最合原點的數值.

6.3 General Interpolation
  利用三種函數方程式表示6.2所示的方法
  (1)Nearest-neighbor interpolation
{0 if u≦-0.5
    R0(u)={1 if -0.50.5
  
  (2)Linear interpolation
   R1(u)={1+u if u≦0
       {1-u if u≧0

  (3)Cubic interpolation
   R3(u)={1.5∣u∣^3-2.5∣u∣^2+1 if ∣u∣≦1,
      {-0.5∣u∣^3+2.5∣u∣^2-4∣u∣+2 if 1<∣u∣≦2

6.4 Enlargement by Spatial Filtering   
  用linear filtering也可以放大影像

6.5 Scaling Smaller   
  ●image minimization:把間隔的點減少以達縮小影像這個目的   
  ●subsampling   
  ●tr=imresize(t,0.25);    
   使用Nearest-neighbor interpolation產生一個有缺口的圓   
  ●trc=imresize(t,0.25,'bicubic');    
   經由Bicubic interpolation可修補上一種方法所產生的缺口

6.6 Rotation   
  利用矩陣旋轉圖形的公式可知旋轉後的點為何.      
  ●在MATLAB中有imrotate(image,angle,'method')可用    
   其中method和前述相同,表示nearest、bilinear或bicubic    
   angle是指定的旋轉角度   
  ●ipud可以顛倒(使相反)行跟列   
  ●iplr讓影像上下相反   
  ●左右相反: 90° flipud(c');        
        180° fliplr(flipud(c));        
        270° fliplr(c');

6.7 Anamorphosis   
  從某一程度的角度看影像,在MATLAB中的指令為rgb2gray   
  指定範圍:skull=a(566:743,157:586);   
  消除這種歪斜效果的指令:   
  skull2=imresize(imrotate(skull,-22,'bicubic'),[500,150],'bicubic');
  因為對那個骷髏頭非常感興趣想實做這部份


但是竟然沒有這張圖>_<

標籤:

星期三, 11月 07, 2007

Week8_CH5

Chap5 Neighborhood Processing
5.1 Introduction
 (1)filter
  將mask和函數作運算後的成果.
  step1:將mask置於pixel上
  step2:對mask和pixel neighborhood上相對應的elment,
     由左至右一列一列做乘積
  step3:將結果相加
 (2)convolution
  和filter大致相同,只是將mask或pixel neighborhood其中之一做
  180度旋轉再做乘積和相加.
  課本中對於此旋轉提到了傅立葉轉換(Fourier transform) ,
  雖然常聽到的定理卻不熟悉內容,因此查了一下.
 (3)將矩陣x by 5*5看作很多個3*3的小矩陣,小矩陣中數值相加取平均數
   後成為另一個平均數形成的矩陣,其結果和原矩陣也是看成3*3個別
   做filter的結果相同.

※除錯區--------------------------------------
P91
mean2(x(1:3,1:3))
ans=
   111.1111
應該是170 240 10
   230 50 70
    40 60 130這個3*3矩陣的結果才對
※除錯區--------------------------------------

5.2 Notation
 5.2.1 Edges of the Image
   用filter會有問題.影像邊緣上的pixels相對應的mask會有部分
   落在影像外.  
  (1)Ignore the edges
   直接忽視這些影像邊緣上的pixels,其輸出值會稍小於原本的.
   如果mask很大,這個方法會使一個重要的訊息也被忽略.
  (2)Pad with zeros
   影像外的數值都為零.會使一個輸出的影像和原本大小一樣,但可能
   會有一些多餘的現象.
5.3 Filtering MATLAB
 ●filter2(filter,image,shape)
  其中參數filter為:mask,image為:要改的圖,shape為:以5.2.1中哪種
  方式做neighborhood processing.如果shape這個參數位置不填值,
  自動用內定值'same'.
  

因為本來是圖片以外的地方都補上0,就可以用"Ignore the edges",mask全部的pixels.結果同於'same'.


  







 ●用越大方陣averaging filter影像會得到越模糊的輸出圖.

 5.3.1 Separable Filters
   filter可分割為小filter.例如一個3*3的可以分為3*1乘上1*3.此特性
   可以用來解決"great time savings",這個意思照後面那段來看應該
   是用來處理很大的、pixels很多的影像.
5.4 Frequencies:Low- and High-Pass Filters
 ●Frequencies
  (1)High-frequency components:小距離內大量改變灰階數值.
    ex.邊緣和干擾.
  (2)Low-frequency components:些微更變影像中的一部份的灰階數
                  值.
    ex.這樣做可能會連帶改變背景和皮膚邊線.
 ●filter:
  (1)high-pass filter:忽略High-frequency components並且減低或
          排除Low-frequency components.
  (2)low-pass filter:忽略Low-frequency components並切減少或排除
          High-frequency components.
 ●解決因為使用linear filter造成數值範圍不在0-255之內產生的問題
  (1)Make negative values positive
    不能處理大於255的數值.這個方法只用在特定的情況下,例如只
    有少數近於零的負數.
  (2)Clip values
    使圖片上所有pixel values都在要求的範圍內,但不適用在如果很
    多灰階數值不在0-255範圍內而且是散佈在很大的範圍裡.強行
    這樣做filter後的結果會是有誤的.      
  (3)Scaling transformation
    若經filter得到一個最低的值和一個最高的值,可以利用線性轉換
    將原本的範圍轉換成在0-255之間.

標籤:

星期二, 10月 31, 2006

虐殺腦細胞第四波攻擊

上個禮拜是要讀出(X,Y)座標以及R,G,B
接續上個禮拜,這次是要將圖片改成指定的RGB

寫不出來阿...
讓人完全不懂的程式碼
雖然老師透露了一點==>Image1->Canvas->Pixels[X][Y]=(TColor)RGB(a,b,c);
然後我的程式也編輯到這行而已

我回家有看課本阿....還是說沒有吸收進去?
怎麼覺得都沒有用勒..
更不要說這次的作業
要做個像小畫家的畫布
目前的進度:上個星期的..


去看了已經寫出來的同學的網誌
嗯...記下

數位媒體概論partIII

今日的題目:移動滑鼠顯示出(x,y)

看到今天的題目,腦中閃過上禮拜老師教學示範的畫面,心想"上禮拜好像有看過.."
但是將BCB畫面打開後,停頓....

馬上翻開今天拿到的課本(好厚..)
照著老師給的提示,同學的回答,翻到6-10"偵測滑鼠訊息"
但還是不知道該把程式碼打在哪裡
眼睛在課本和螢幕來來回回,試著從課本找出解答
聽到老師一直問說有沒有人有答案,就找得更緊張了
掙扎很久還是宣告放棄,只好問旁邊已經完成的同學

-------------以下都要補圖----------------------
1.開啟BCB
2.點框框兩下,案Event找"OnMouseDown",在空白處點兩下,跳出編輯程式畫面
3.將6-11的程式碼"LabeledEdit1->Text=X;"
"LabeledEdit2->Text=Y;"打上,回上個畫面更改名稱
4.再用上禮拜學的讀圖將BMP圖檔秀出
-----------以上待補圖---------------------------

課堂心得:
前兩次上完課,總是想著晚點再寫網誌,但是人的惰性是可怕的..><"
今天聽老師問說同學們是不是對於課堂的教學方式有其他意見
看樣子是包括我還有其他同學太晚寫網誌讓老師們這樣說..

其實這樣的上課方式的確才有讓我們主動學習的效果
對於課程內容的記憶比較深刻
寫網誌也是為自己的學習記下歷程
以後要是忘了些部分也可以再看網誌回憶

拿到課本了
可以看看一些最基本的概念和名詞
接觸BCB是最近的事情
還有很多地方需要學習
希望能多看幫助自己在下堂課學得更多
一堂課下來要記好多東西
腦袋好暈阿@_@

---------------------------------------BCB的專案儲存後,會產生哪些不同的檔案、功能?
分別有四種不同的結果1.儲存Form或程式碼2.同1.但是改檔名再儲存3.把專案改檔名儲存4.把正在編輯的Form、程式碼、專案等所有檔案全部儲存

BCB初次使用

BCB初級日誌


如何讀出圖片的第一步:
http://pic7.pic.wretch.cc/photos/25/c/collenfin/2/1065247123.jpg">%20/>第二步:點兩下botton,在程式碼中貼上兩種指令1."OpenPictureDialog1->Execute()"--->選定開啟的影像。2."Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName)"--->將影像顯示到%20Image1%20這個影像物件中。http://pic7.pic.wretch.cc/photos/25/c/collenfin/2/1065247124.jpg"> />第三步:編譯成功後選擇要選取的BMP檔
http://pic7.pic.wretch.cc/photos/25/c/collenfin/2/1065247125.jpg">%20/>第四步:選取並顯示圖片http://pic7.pic.wretch.cc/photos/25/c/collenfin/2/1065247126.jpg"> />完成!!

都是英文的程式容易讓人眼花撩亂....
不過 總算是會了應該算是非常簡單的讀圖

這禮拜的課程老師依舊希望大家能提出問題
不過對於BCB完全陌生的我
怎麼提出問題就是個問題
看到有人在白板上寫著"第一次來什麼都不懂"
心裡想的是"雖然不是第一次來,還是什麼都不懂"...

不過對著佔去白板上大半的問題
老師們一一的解答
讓我對BCB有了初步的了解...只有一點

繼續努力ˊˇˋ

星期四, 10月 26, 2006

新BLOG開張

最後還是使用無名了
無名這Blog太氾濫本來不想用..
Xuite、天空比較好阿

都是為了數位謀體導論阿Q_Q"
好多人都另外申請帳號
不想讓自己的心情記事曝光吧
老師好像超喜歡用Blog..

老實說上了第一節課就有想退的衝動= =+
好多高手阿~我都聽不懂>口< 不過又希望能夠從課堂中吸收這些我不懂的 變成我所學到的 嗯...去借書來看吧~"~ 明天又是上課的日子 加油>"<