2007年10月31日 星期三

Week6 Homework6

※Chapter 4 閱讀與實作心得與提問

4.1 Introduction
 關於影像處理的運算,大約可以分成三種類型
 1.Transforms.(轉換)
  Figure 4.1 show了圖片處理的四個步驟:
  Image→Transformed image→Processed transformed image
  →Processed original image
 2.Neighborhood processing(鄰近範圍的處理)
  改變一張灰階圖片的Level,需要參照其他Pixel的Level。
 3.Point operations.(點的運算)
  特定的Pixel改變時,不影響其他的Pixels。

4.2 Arithmetic Operations(算術運算)
 令整張圖片當作一個f(x)函數,使用數學上的運算處理。
 Figure 4.2,左圖是將所有的Pixels都增加128..
 如此一來,value高於128的會在相加後超過255。 (右圖則是減去128)
 此外,稍稍的提到了immultiply(乘)與imdivide(除) function

 COMPLEMENTS
 課本上提到了bc=imcomplement(b);
 bc是b這張圖片(矩陣)的補數
 show出來的圖片會有solarization(曝曬作用)的效果 //<-Question!!

4.3 Histograms
 一個灰階的圖片,統計gray level後可以將每個level所擁有的值繪致成一張長條圖(Histogram)。而關於這個長條圖(Histogram)擁有以下幾點特點:
 ˙在顏色深一點的圖片,gray level大多分布聚集在較低的level中
 ˙在顏色亮一點的圖片,gray level大多分布聚集在較高的level中
 ˙在對比良好的圖片中,gray level會平均分布在全部level中

4.3.1 Page74~75
 關於plot(t,th,'.'),axis tight
 我試著打出plot(t,t,'.'), plot(th,th,'.'), plot(th,t,'.')
 當變數相等時,由點構成 y=x 的線
 →plot(x,y) 由x值範圍當x軸,y值範圍當y軸

 而關於imadjust(t,[],[],0.5); //0.5即gamma value
 我試過imadjust(t,[0~1 0~1],[])
 雖然有看出圖片的不同,但想不出該如何解釋現象//Question!!

4.3.2 Histogram Equalization(均化作用)
 說到Histogram的均化,大概可以分成兩種:
 1.讓每個bar都有一樣的高度
 2.讓每個gray level出現的頻率相同
 課本的均化作用似乎偏向於2...
 「使Histogram平均分布在255個level中」

 Page.78 定義一個n=360,把它分成15層→15/360= 1/24
 Figure 4.17原本的level在均化後以Figure4.18呈現
 但是...Histogram的bar竟然少一條!!  //Question!!!

4.4 Lookup Tables(查表法)
 Page.83的Commands是在實現 Figure 4.23
 t1=0.6667*[0:64];
 t2=2*[65:160]-128;
 t3=0..6632*[161:255]+85.8947;
 T=uint8(floor([t1 t2 t3]));
 解讀如下:
 T是user所建立的一個table
 當gray image的pixel value是從
 0~64時,對照 t1的算式→new value
 65~160,對照t2的算式→new value
 161~255,對照t3的算式→new value

※問題區(將上述問題特別整理出來)
1.COMPLEMENTS
 使用imcomplement指令,會產生元圖片的補數
 而補數show成一張image時會有曝曬作用的效果
 (以上我根據課本內容所做出來的解讀)
 →照片的負片是否與這個作用有關?(關於舊式底片的問題)
 →所謂的曝曬作用,是指圖片嚴重曝光嗎?
2.imadjust  我試過imadjust(t,[0~1 0~1],[])
 雖然有看出圖片的不同,但想不出該如何解釋現象
3.Histogram Equalization
 Page.78 定義一個n=360,把它分成15層→15/360= 1/24
 Figure 4.17原本的level在均化後以Figure4.18呈現
 但是...Histogram的bar竟然少一條!!
 我反覆推算,還是想不出那條bar到底落到哪區

以上是我重新閱讀與思索第四章後的心得筆記問題
有部分與上週產生的問題重複,有部分已經解決....

2007年10月19日 星期五

Week5 Homework5

[Notes]

※4.1 Introduction
Image-processing operations may be divided into three classes based on the information required to perform the transformation.
1.Transforms.
2.Neighborhood processing.
3.Point operation.

※4.2 Arithmetic Operations

※4.3 Histograms
→imshow(p),figure,imhist(p),axis tight

├4.3.1 Histogram Stretching
│   gamma value(?)
└4.3.2 Histogram Equalization
    qualization
※4.4 Lookup Tables


Questions:
1.LUT(?)

2007年10月17日 星期三

Week4 Homework4

閱讀3.6 Quantization and Dithering

[Notes]
uint8(floor(double(x)/2)*2)...etc
imshow(grayslice(x,128),gray(128)) <=分成幾層灰階的色階 Dither 的中文解釋(?) Questions: 1.Dithering  Dither:  a.[to be unable to make a decision about doing something] verb  b.[be in a dither about sth to be very nervous, excited or confused about something] noun  不知道在IPC中,Dither該如何翻譯 2.承上 Page.56~57 關於矩陣D=[ 0 128; 192 64 ]那方面,我的解讀是將圖片切割成N個以2*2為一個blog做單位,逐一與D比較,會因為資料數據而簡單將區塊劃分為「Dark gray」、「Midgray」、「Light gray」如同Figure 3.13的顯示。而我發現Figure 3.14並不是完全的純黑白數據而已,於是翻看Page.57程式碼部分,由於x2=x>r ,imshow(x2) 所產生的Figure 3.14仍有色差,這點很不能理解。

3.承一,希望更詳細理解Dithering的意義,有點不能理解Page.61圖片參雜著雜訊點的意義。

2007年10月6日 星期六

Week3 Homework3

簡單的翻閱過一遍...
Notes:
(※章節重點)
3.1 Introduction
This is a consequence of two properties of an images: its spatial resolution and its quantization.
影像是由兩種特性所造成的結果:空間分析與量化

3.2 Basics of Image Display
The same image may be very different when viewed on al dull CRT monitor compared with a bright LCD monitor.
一樣的圖片會因為硬體的差異而產生不同的view

 c=imread(‘picture’)’
 image(c);
 //這種show法,會讓圖片配合螢幕而產生變形

※為了讓圖片正確的Show出來,下面有幾個指令..
 1.truesize
 2.axis off
 3.colormap(gray(247)

3.3 The imshow Function
  c=imread(‘picture’);
  cd=double(c);
  imshow(c). figure, imshow(cd)
//如果c是灰階圖,cd會變成白圖…如果不是…

  imshow(cd/255) //不變
  imshow(cd/512) //變暗
  imshow(cd/128) //變亮

3.4 Bit Planes
  c0=mod(cd,2);
  c1=mod(floor(cd/2),2);
  c2=mod(floor(cd/4),2);
  c3=mod(floor(cd/8),2);
  c4=mod(floor(cd/16),2);
  c5=mod(floor(cd/32),2);
  c6=mod(floor(cd/64),2);
  c7=mod(floor(cd/128),2);
//取得每個bit的0,1值,轉換成C++如下:
//簡單敘述,直接複製應該會有bug....=.=
 for(i=0;i<ImageHeight ;i++)
  for(j=0;j<ImageWidth ;j++)
  {
    //c0的部分
    if(Image[i][j]%2==0)
    c0[i][j]=white;
    else
    c0[i][j]=black;
    //c1的部分
    if( (Image[i][j]>>1) %2==0 )
    c1[i][j]=white;
    else
    c1[i][j]=black;
    
    //c2的部分
    if( (Image[i][j]>>2) %2==0 )
    c2[i][j]=white;
    else
    c2[i][j]=black;

    //c3的部分
    if( (Image[i][j]>>3) %2==0 )
    c3[i][j]=white;
    else
    c3[i][j]=black;

    //....之後的etc...
  }
3.5 Spatial Resolution
  imresize(x,1/2);
  imresize(imresize(x,1/4),4);
  //每四個pixels取其中一個代表全部
  imresize(imresize(x,1/8),8);
  //每八個pixels取其中一個代表全部
  imresize(imresize(x,1/16),16);
  imresize(imresize(x,1/32),32);

3.6 Quzntization and Dithering
※還沒閱讀完畢

◎Questions
1. 位於3.2 Page.42
※為了讓圖片正確的Show出來,下面有幾個指令..
 1.truesize
 2.axis off
 3.colormap(gray(247)
根據課本的說法以及我的解讀,光用image(c)會讓圖片配合硬體顯示;使用1的指令,可以讓圖片忽略硬體的要素,也就是不管在怎樣的螢幕都會show出一樣的東西;使用3的指令,可以讓灰階色彩按比例分佈於(247)層中;那麼,axis off的指令....所代表的意義是?

2. 位於3.3 Page.44
※The imshow Function
  c=imread(‘picture’);
  cd=double(c);
  imshow(c). figure, imshow(cd)
在我看來,如果c是灰階圖,cd會變成白圖…如果不是(也就是彩色圖片)… 會有一些比較明顯的線條,但是我目前還不清楚那些線條會出現的共通點為何,因為有黑有紅。

3. 位於3.3 Page.45
※承上
  imshow(cd/255) //不變
  imshow(cd/512) //變暗
  imshow(cd/128) //變亮
他作除數的動作,是在表達些什麼呢?灰階圖片的分層數量嗎?
譬如(cd/255) 將灰階分成255層,(cd/128)將灰階分成128層?
還是單純的把cd的值除以255以及除以128那麼簡單而已?

2007年10月4日 星期四

Week2 Homework2

Notes:
2.1 Grayscale Images
 w=imread('');
 //讀取一張圖片
 Figure, imshow(a),pixval on
 //show圖片 可由游標看到該Pixel的座標與顏色值

2.2 RGB Images
 impixel(a,200,100)
 //看到a,座標(200,100)的pixel值
 把每張圖片的座標與RGBvalue等要素綜合起來
 可以看到經由一個陣列來儲存所有的value
 所有的value都是那張圖片的一個小要素

2.3 Indexed Color Images
└2.3.1 Information about Your Image
 imfinfo('picture')
 //這邊我Key in了自己的圖片 show出來的圖片訊息與課本不太相似
 ans=
 Filename: 'D:\picture\msn\雷.jpg'
 FileModDate: '19-Sep-2007 23:32:51'
 FileSize: 104242
 Format: 'jpg'
 FormatVersion: ''
 Width: 300
 Height: 300
 BitDepth: 24
 ColorType: 'truecolor'
 FormatSignature: ''
 NumberOfSamples: 3
 CodingMethod: 'Huffman'
 CodingProcess: 'Sequential'
 Comment: {}
 //是否有辦法透過指令修改show的information?

2.4 Data Types and Conversions
 whos a b
 //show a b的資訊
 //其他type還有 int8, int16, uint8, uint16

2.5 Image Files and Formats
 簡單介紹了常用的、以前出現過的圖片格式
 Ex:JPEG,TIFF,GIF,BMP,PNG,HDF,PCX,XWD,ICO,CUR

 使用dumphex Function可以把圖片資訊用16進位格式show出
 >>dumphex('picture',4)
 //表示把picture的data 前四行用16進位show出來

 ※2.5章還需要詳加閱讀...

心得:
  原本想慢慢的每天看一點來做紀錄,結果不知不覺中上課的日子又要來臨了 囧,稍微整理了一下每天做的小筆記,卻覺得很貧弱。嗯,以上都不是重點....Chapter2簡單的介紹了圖片的格式、一些比較常被用到的指令,似乎已經可以用這些指令來做一些簡單的處理了,卻又覺得哪裡不太足夠;或許每學習一個新的程式語言都會有這樣的過渡期吧!(但其實目前學過的程式語言也沒有熟悉到哪裡去啊 囧)

問題:
1.
TIFF:Tagged Image File Format
HDF:Hierarchical Data Format
PCX:Design for MS-DOS-based and Microsoft products.
ICO:display icons in Microsoft Windows.
CUR:mouse cursor in Microsoft systems.
上面的圖片格式,課本有做簡單的介紹,不知道是否能親眼見到一下。

2.
PGM
我在網路上稍微搜尋了一下跟PGM有關的資料,部份資料如下:
A PGM image represents a grayscale graphic image. There are many psueudo-PGM formats in use where everything is as specified herein except for the meaning of individual pixel values. For most purposes, a PGM image can just be thought of an array of arbitrary integers, and all the programs in the world that think they're processing a grayscale image can easily be tricked into processing something else.

他說明了PGM是一個跟灰階圖片有關的影像,之後就.....????

3.問題在上面
2.3.1那邊....