顯示具有 95361002 謝欣珊 標籤的文章。 顯示所有文章
顯示具有 95361002 謝欣珊 標籤的文章。 顯示所有文章

2010年1月13日 星期三

HW7

這次的作業我有一度卡住,

因為輸出的影像邊緣值變得很模糊,

依照課本所說的公式:

m=|g(x)|+|g(y)|

原本我是以平方開根號的方式來計算,

但是中間計算過程一直出錯!

後來決定放棄還是用絕對值fabs來計算較快!!


//M(x,y) = G(x) + G(y)
= |( p[7] + ( 2*p[8] ) + p[9] ) - ( p[1] + ( 2*p[2] ) + p[3] )|
+|( p[3] + ( 2*p[6] ) + p[9] ) - ( p[1] + ( 2*p[4] ) + p[7] )|;


在做修正的時候,發現原來是我原本在計算sobel運算多乘了一倍,

所以遮罩的值也跟著大一倍去!!


在執行程式時,

我做了很多張圖的測試,

發現如果我開啟一張筆設定的image長寬小時,

又設定圖片自動調整成設定的大小,

執行經過運算轉換後,

整張圖的因像素不夠大而會看到一個一個的像素點就會變得超明顯的!!

我也利用自己照的照片去做測試,但是大概照片亮度本身就比較暗吧!!

輸出的圖就像是一張手繪圖,感覺挺有趣的!!

以下有三張我所測試的影像,

第一張不知道為什麼輸出邊緣就是感覺不怎明顯,

但測試接下來兩張就沒有這樣的問題存在了!!


這次的作業我體驗到一個心得,就是開啟的影像大小也會影響輸出的清晰度!!






2010年1月10日 星期日

HW8

期末心得與檢討報告:

  這學期本科的出席率真的很低,也因為第一次體驗不同的上課方式,似乎不能適應,我果然習慣高壓政策的指導,自律性太低了!早上的課我幾乎都遲到缺課,其實自己也不想這樣日夜顛倒的作息,但是一來自己的吸收理解速度總比別人慢一倍,每天要休息時都已經是至少半夜3點過後,在自讀時也花了別人不只超過一倍的時間去理解,但似乎就是會很容易的偏離方向,上課時的內容也是有再稍微做筆記演算,但就是不太能把理論和實際操作做結合。如此下來自己也很氣餒,一開始也因為自己沒有bcb而沒法寫作業,事後雖然界到了確因為電腦硬碟不能讀取問題而不能安裝,解決辦法也有自己留在學校寫作業,但是因為沒人可以問就算留在學校也是做不出來,所以我常常面臨一種窘況,"工欲善其事,必先利其器",有了理論沒有實作,有了工具卻缺乏更進一步的理解,這樣對我來說等於一切都是空談!因為自己總覺得要自己親身體驗過才會有深刻的印象,就好像在算學數學一樣,學了新的公式,也只有自己先試算過才會知道自己可能面臨的錯誤。

  google使用問題,其實自己一直很不喜歡使用google的模式,當初上傳完作業,要修改時找不到修改按鈕是哪一個,問朋友又還是不太明瞭在哪哩,後來才知道修改是一支筆的圖案。回想起來就覺得自己眼睛真的很大!也因為不喜歡使用google,所以總會下意識的排斥使用,對於不能接受就是會排斥,這樣極端的處事態度也是我需要改進的地方之一。

  本學期學到的知識,是我很常使用的圖片處理工具,銳利、模糊、對比、亮度等等的操作,其實都挺實用的!也了解到在醫學上的X光照的知識。在課業學習上,最希望自己能有改變的是

1. 恢復正常作息
2. 多勇於和別人討論,不敢開口大概是我最大的障礙

2010年1月8日 星期五

HW6


hw6 : 空間濾波器

效果:
  可以使影像變模糊化或銳利化。



規則:
  輸入數值完畢後,會先判斷是灰階影像還是彩色影像,再一判斷的結果決定要由哪一個 Image(#number) 元件執行轉換動作。





執行成果:

 1. 當輸入是一張灰階影像時 :
  開啟一張灰階影像後,手動輸入一個 3 * 3 的陣列值使其影像轉換。

 2. 當輸入是一張彩色影像時 :
  開啟一張色彩影像,先做色彩變灰階影像轉換後輸出在另一個 Image(#number) 上,假設該 Image(#number) -> Name -> Image_Trans ,後在輸入 3 * 3 數值按下轉換按鈕時,會先判斷 Image_Trans 是否存在,存在代表已轉換成灰階影像,就可由 Image_Trans 的圖來做轉換。

  其判斷圖像的程式碼如下:
  
   Graphics::TBitmap *Bmp = new Graphics::TBitmap();
//先判斷 Image2 是否有開啟一張影像圖。

//當 Image2->Picture->Bitmap->Empty==true 時,代表還未開啟一張圖像!
   if (Image2->Picture->Bitmap->Empty==true)
     ShowMessage("請載入圖檔!!");
//若以 Image2 已存在時。
  else   

  //開始判斷開啟的影像是否由彩色轉成灰階值,由於這個地方我是以手動操作色彩轉灰階,所以假若開啟的圖像是彩色的,若是直接由彩色圖像做權重加成的轉換,則輸出的圖就會以灰階的型態呈現,但是因為權重是由輸入者輸入,所以輸出的影像也可能會有變成類似紅外線感熱器所呈現的效果,但是是以灰階的型態呈現就是了!
  {
     if(Image17->Picture->Bitmap->Empty==false) //當有轉換成灰階值時
       Bmp->Assign(Image_Trans -> Picture -> Bitmap);
     else                    //當開啟的圖是灰階時
       Bmp->Assign(Image2 -> Picture -> Bitmap);
  }




執行結果圖片說明:

  在右邊上面的圖是以一張黑白影像執行的結果。

  現在右手邊的圖則是以一張彩色影像執行的結果。

 1. 先開啟一張彩色影像(如右圖中的左上方影像)。

 2. 做灰階轉換處理(執行結果在右圖中右下方的影像)。

 3. 輸入權重後執行轉換(執行結果在右圖中的中間下方的影像)。

hw5

hw5 : 8位元切面轉換

  這一個作業是我思考最久的作業,在演算陣列位置和測試時也有很多新發現。

  主要是要運用一個 8 bits 做遮罩的動作。
  在處理載入的圖片時,一開始因為我先直接以ipeg檔調整大小,所以在轉換成bmp檔時在直行切面轉換出現的就都是黑色的圖像。但也因為常識了這樣的錯誤也就多學習到一個很好的經驗。
  在處理遮罩時,因為習慣先自己用數學演算看看所以一開始並沒有使用scanline這個指令,而使以最笨的方法來做計算,有點像在用組合語言寫指令一樣。
  而在轉換時,因為我都把圖的長寬都設定成小圖,所以在像素點多偏向黑色時就會變成幾乎都黑色,不容易分辨,所以我在判斷時等於 0 的值都會增加一些常數值下去。
  在判斷bit值時,則是用 Radiobutton 來設定。

執行檔結果說明:
  
  先開啟一張影像,開啟後則從 RadioButton ->Cpation -> 1 bit 開始點選,依序點選到 8 bit,顯示的結果就會如下團所示:
 

  我執行的結果發現和原先預定的執行結果還是不太一樣,好像在轉換過程的演算法有錯誤吧!!只是我到現在都還在推敲中就是了!

  但是我測試過若開啟不改變原圖大小的影像,執行結果就會是正確的。

HW4

hw4:輸入gamma值轉換



紅色字為補交後修改的部分!



公式:s=c*r^gamma


s : 是轉換後的值

c : 是個常數,設定預設值是1

r : 是原始影像中每個像素點的值



  原本在show圖時,一直都是出現全白的圖,後來一直在計算gamma值的公式一直在做修改,修改常數 c 的值,後來才發現我要修改的地方整個弄錯了 ! 原來我在 R[][] , G[][] , B[][] 陣列的地方打錯了,變成 R[][] , G[][] , R[][] 。




(修) c = 255/(255^Gamma)
  RIMatrix[i][j] = c * ( RIMatrix[i][j] ^ Gamma);
  GIMatrix[i][j] = c * ( GIMatrix[i][j] ^ Gamma);
  BIMatrix[i][j] = c * ( BIMatrix[i][j] ^ Gamma);
說明 : 因為只是複製再修改宣告的變數就可以,所以很容易忽略過去而沒去確認有沒有改錯!



(修)  因為c值的地方想錯了,又看了別的同學已交上來的作業說明,發現這次再看一次我便懂了,因為之前並不了解 c=255/(255^gamma)這個是子的意思,看課本也看得不太明白,所以程式碼稍微修正就可以了!



(修)  int Gamma=StrToFloat(Edit3->Text);
註 : 在輸入1是輸出的圖就會變成原圖。

執行結果圖片說明:
(修)

在下圖的執行結果中,第二張圖是開啟的原始影像。
  在上述就有提到,當gamma = 1 時,第一張圖顯示的就是原始圖,並沒有任何轉變。
  現在補上當gamma=2時的執行影像。


  可以看出轉換後的影現有變得比原圖暗了一點點(但不知道為什麼就是不太明顯..)!
  由此就可以看到輸入的gamma值以 1當基準,遞減時會變亮,遞增時會變暗。






2009年12月17日 星期四

HW3

這個作業本來還是不明白直方圖要畫甚麼線,看了範例程式才知道是運用LineTo,
本來一直覺得很難,寫出來後才恍然大悟原來是這樣。
給定一個最大和最小值,和RGB3個亦為陣列,判斷若超過最大或低於最小時,
再把該RGB值取代原來的最大最小值。



hw3修改:

  對於這個作業是在學校寫的,由於時間太匆忙,需要趕在電腦教室關門前上傳,所以來不及做多一點的說明。因為沒有用過gmail,在要修改時又一直找不到修改的按鈕,所以就這樣擱置下來了!
  本次作業其實我又重新做了一遍,ScrollBar在按到最左邊時就會發生錯誤,而中止程式執行,主要是若像素值出現0時又做除法運算,把該像素值放在分母,造成運算錯誤。而在除錯過程中,發現只要把左邊的設定值min由0改成1就不會有這樣的問題出現了!
..

2009年12月16日 星期三

HW2




這是在45度時的旋轉,旋轉後的四個頂點剛好在長寬的中間。

我也以其他角度做了測試,發現在垂直或平行角度的時候照片是可以完全呈現選轉後的圖的,在45度或315度顯示也是正常的。
旋轉270度的時候
旋轉315度的時候


但是在135度或是225度時,圖片又被裁掉了!
我再試著輸入和平行或垂直相近的角度,發現在這時圖片就已經開始被裁掉了。



旋轉170度的時候
旋轉225度的時候

輸入的角度會在90-270度之間時,就不能完全顯示,原本以為是因為沒有scrollbox,但增加後發現並不是這個的問題,目前還在找錯當中。

2009年10月1日 星期四

HW1

顯示結果:
     開啟bmp檔
     顯示結果

心得:
  在本次作業中,一直擔心自己做不出成果來,首先擔心沒有BCB軟體做作業,後來借到了,但又因為在開啟圖檔時總是顯示不出來,後來我又研究了一下學長的作業說明,也在仔細觀看過一次程式碼後,發現加入幾個宣告,程式就可執行成功了!本來還常是開啟兩個圖檔,多增加一個開啟圖檔的按鈕和圖,但是試了的結果是兩個開啟的檔案都在第一個秀圖區,第二個開啟圖檔的程式碼我有做過修改,但就是無法顯示在第二個秀圖區。
因為沒修過BCB,對於BCB操作我研究課本和圖書館借來的書籍以及網路上的教學好久,還是覺得不太懂,然後還發現前面幾個同學連RGB值或值方圖都秀出來(這是打擊!),我都不太懂這部分,題目顯示『開啟並讀取一張影像到二維陣列中。』,不Show值方圖和RGB值應該沒關係吧?