顯示具有 97360802 蘇哲仕 標籤的文章。 顯示所有文章
顯示具有 97360802 蘇哲仕 標籤的文章。 顯示所有文章

2010年12月31日 星期五

直方圖均化與統計

直方圖均化與統計












直方圖統計

















主要是在圖像處理方面,直方圖的圖像通常是指一個直方圖的像素強度值 此柱狀圖是顯示有多少像素的圖像中的每個不同的強度值中找到該映像。 對於8位灰度圖像有256個不同的可能強度,所以柱狀圖顯示圖形顯示256號碼分佈的像素的灰度值之間。 也可以採取直方圖的彩色圖像 ---或者個人直方圖的紅色,綠色和藍色通道可採取或一個三維直方圖可以生產,與三個軸代表紅色,藍色和綠色通道,和亮度在每個點代表的像素數。 確切的輸出操作取決於執行 ---這可能僅僅是一個圖片的需要在合適的直方圖的圖像格式,也可能是某種類型的數據文件代表直方圖統計。

這部分的程式碼看了很久,感覺不是很好懂,而且還運用了新的元件─radio group 使我找了很久,還好問同學之後,比較了解ㄌ!

主要的程式碼是


imHistogram->Canvas->Brush->Color = clWhite;

if (rgHistogramChannel->ItemIndex == 0)

imHistogram->Canvas->Pen->Color = clBlue;

else if (rgHistogramChannel->ItemIndex == 1)

imHistogram->Canvas->Pen->Color = clGreen;

else if (rgHistogramChannel->ItemIndex == 2)

imHistogram->Canvas->Pen->Color = clRed;

else

imHistogram->Canvas->Pen->Color = clWhite;

利用這個程式碼來採取一個三維直方圖可以生產,與三個軸代表紅色,藍色和綠色通道,和亮度在每個點代表的像素數。

心得:感覺這個程式碼,真的很不好懂,但是有去問同學之後,就還好了!!比較知道這三個顏色通道的意思,還有對程式碼,也比較了解。雖然在寫程式的過程中,因為有些元件的關係,找了很多的資料,所以我覺得,雖然有時找到的資料不是我要的,但是可以知道很多不同的東西。

2010年12月24日 星期五

濾鏡處理 filtering


1.平滑濾波器

平滑線性空間濾波器的輸出(回應)是包含在濾波掩模鄰域內圖元的簡單平均值。因此,這些濾波器也稱為均值濾波器。平滑濾波器的概念非常直觀。它用濾波掩模確定的鄰域內圖元的平均灰度值去代替圖像每個圖元點的值,這種處理減小了圖像灰度的尖銳變化。由於典型的隨機雜訊由灰度級的尖銳變化組成,因此,常見的平滑處理應用就是減噪。然而,由於圖像邊緣也是由圖像灰度尖銳變化帶來的特性,所以均值濾波處理還是存在著不希望的邊緣模糊的負面效應。

bPtrResultImage[j*3] =

(byte)((bPtrOriginalImage0[j*3-1*3]+bPtrOriginalImage0[j*3]

+bPtrOriginalImage0[j*3+1*3]

+ bPtrOriginalImage1[j*3-1]+bPtrOriginalImage1[j*3]

+bPtrOriginalImage1[j*3+1*3]

+ bPtrOriginalImage2[j*3-1*3]+bPtrOriginalImage2[j*3]

+bPtrOriginalImage2[j*3+1*3])/9 + 0.5);

bPtrResultImage[j*3+1] =

(byte)((bPtrOriginalImage0[(j*3+1)-1*3]+bPtrOriginalImage0[j*3+1]

+bPtrOriginalImage0[(j*3+1)+1*3]

+ bPtrOriginalImage1[(j*3+1)-1*3]+bPtrOriginalImage1[j*3+1]

+bPtrOriginalImage1[(j*3+1)+1*3]

+ bPtrOriginalImage2[(j*3+1)-1*3]+bPtrOriginalImage2[j*3+1]

+bPtrOriginalImage2[(j*3+1)+1*3])/9+0.5);

bPtrResultImage[j*3+2] =

(byte)((bPtrOriginalImage0[(j*3+2)-1*3]+bPtrOriginalImage0[j*3+1]

+bPtrOriginalImage0[(j*3+1)+1*3]

+ bPtrOriginalImage1[(j*3+2)-1*3]+bPtrOriginalImage1[j*3+2]

+bPtrOriginalImage1[(j*3+2)+1*3]

+ bPtrOriginalImage2[(j*3+2)-1*3]+bPtrOriginalImage2[j*3+2]

+bPtrOriginalImage2[(j*3+2)+1*3])/9 + 0.5);

圖1 圖2


二種掩模更為重要一些。這個掩模也叫做加權平均,使用這一術語是指用不同的係數乘以圖片,這樣,從權值上看,一些圖片比另一些更為重要。對於圖2所示的3×3掩模,處於掩模中心位置的圖片比其他任何圖元的權值都要大,因此,在均值計算中給定的這一圖片顯得更為重要。而距離掩模中心較遠的其他圖片就顯得不太重要。由於對角項離中心比正交方向相鄰的圖更遠,所以。它的重要性要比與中心直接相鄰的四個圖片低。把中心點加強為最高,而隨著距中心點距離的增加減小系數值,是為了減小平滑處理中的模糊。我們也可以採取其他權重達到相同的目的。然而,圖2掩模中的所有係數的和應該為16,這很便於電腦的實現,因為它是2的整數次冪。在實踐中,由於這些掩模在一幅圖像中所占的區域很小,通常很難看出使用圖1的各種掩模或用其他類似手段平滑處理後的圖像之間的區別。

2.銳利化




















主要是把圖片做銳利化處理後使得圖片的細部變得更明顯,與平滑化相反,使圖片更為刻劃。
而主要的原理是把自己的色彩值乘"9",再減去周圍"八"個像素點色彩值,必且去判斷當值大於255時,以255表示,當值小於0時,以0表示,不然圖片會有問題

int image0= bPtrOriginalImage1[j*3]*9-(bPtrOriginalImage0[j*3-1*3]+bPtrOriginalImage0[j*3]+
bPtrOriginalImage0[j*3+1*3]+bPtrOriginalImage1[j*3-1*3]+bPtrOriginalImage1[j*3+1*3]
+ bPtrOriginalImage2[j*3-1*3]+bPtrOriginalImage2[j*3]+bPtrOriginalImage2[j*3+1*3]);
if(image0>255) bPtrResultImage[j*3]=255;
else if(image0<0)>
else bPtrResultImage[j*3] = (byte)image0;

3.胡椒鹽處理


主要是把圖片中,白色或是黑色的點點處理調,使圖片變的清晰。
程式主要是先做一個sort的函式,然後把自己和周圍八個點的色彩值放進去做排序,選擇中間值,因為白色或黑色的胡椒鹽其值為255,0,所以只要找到把中位數的值印出來,就可以把胡椒鹽給去掉ㄌ!!

Rsort[0]=bPtrOriginalImage0[j*3-1*3];
Rsort[1]=bPtrOriginalImage0[j*3];
Rsort[2]=bPtrOriginalImage0[j*3+1*3];
Rsort[3]=bPtrOriginalImage1[j*3-1*3];
Rsort[4]=bPtrOriginalImage1[j*3];
Rsort[5]=bPtrOriginalImage1[j*3+1*3];
Rsort[6]=bPtrOriginalImage2[j*3-1*3];
Rsort[7]=bPtrOriginalImage2[j*3];
Rsort[8]=bPtrOriginalImage2[j*3+1*3];

bPtrResultImage[j*3]=rrr(Rsort);

心得:這次的濾鏡差點真的不太了解,不過還好有同學的幫忙,不但知道每一個處理的原理,而且寫完才發現,原來每一個程式碼一點都不難,只是沒有想到或是理解,很謝謝同學的幫忙,除了能寫好著個程式外,真的有試著下去用原理寫程式,也對影像處理的原理,更佳的了解。

2010年12月16日 星期四

Sony 3D World異想世界




Sony 3D World異想世界




這次3D展真的很特別耶!!一開始的3D效果的秀場真的讓我很驚訝!!感覺真的有身歷其境的感覺,而且我有照到show girl唷~!!(加20分^^)不過說真的3D效果真的很厲害,她有展示出現在的3D效果除了用在電影上,慢慢的也用在家用電視還有電玩上,這代表著將來很多視訊上的效果,將會以3D方式呈現,這讓我想起很多科幻電影的劇情,立體3D投影的效果,真的再也不是幻想,而是將來將會出現的產物,所以這趟3D異想世界之旅真的讓我大開眼界,也讓我的視野擴大許多。


而且我也把所有的區域都走遍了,當然最為好玩的就是賽車遊戲拉,而最新奇的是就是3D照相機,雖然在去之前老師有大致上解釋過了3D照相機的原理,不過當場在操作的時候,真的感到很特別耶!!真的超厲害的!!還有在電影區看金沙的時候,裡面的3D眼鏡更特別,竟然有好像要裝電池,工作人員沒有解說為什麼要裝電池,不過據老師說是要讓兩隻眼鏡的影像,可以更容易分開。看完所有區域出來之後,還可以換帥氣的滑鼠墊和筆記本,感覺真不錯。真希望下次還有類似的展覽能夠參觀,雖然說這些東西,其實在雜誌上就可以知道了,不過到現場看展覽就是很特別,所以希望以後還有類似的展覽,我也可以介紹更多的朋友去看看,增廣見聞^^!!

2010年11月5日 星期五

作業一


題目: 將一張彩色影像轉成灰階影像後, 再對灰階影像進行色彩量化處理, 分別用 128 色, 64 色, 32 色, 16 色, 8 色, 4 色, 2 色(黑白影像) 顯示。

但是我只做出了2色的,很簡單的想法是把256色的灰階拆成兩半,0~127為白色而另外128~256為黑色,這就是所謂的二值化。我找了很多的資料,但是都很複雜,
有的用陣列的方法是例如:

24bit-> 16bit比较的容易,因为graylevel = 0.29 * R + 0.59 * G + 0.11 * B, 因为人的眼睛对灰度比较敏感,16bit 不能被3整除,而Green通道对灰度的贡献是比较大的,所以对Green通道的量化细一些,R:G:B = 5:6:5,Green通道多分了一个bit,就是这个道理,24bit转16bit按照如下公式即可,(C描述)
R_16Bit = R_24Bit > > 3;
B_16Bit = B_24Bit > > 3;
G_16Bit = G_24Bit > > 2; Color_16Bit = ((short)R_16Bit < <>

真的有點看不懂,所以到最後還是去看同學的心得才寫出來。找資料的時候,我總是希望有人可以提供程式碼出來,但這一切都是幻象,因為真正的程式也是別人想出來的,必須要從理論著手,不過真的思考上打結了,所以雖然大概知道概念,但總是打不出來,所以必須要多練熟BCB並且把影像處理的概念多弄熟,這樣對寫程式才有幫助,這是最近找資料遇到的瓶緊,下次我會好好的先了解一些概念,在開始打程式,而不是一開始就有人幫你打好了,而且就算有程式,沒概念的人一樣不會打。

上課之後,藉由老師的講解有把剩下的程式打出來,也做出了2bit,4bit,8bit,16bit,32bit,64bit,128bit

2bit
4bit
8bit
16bit
32bit
64bit

128bit

經過老師的講解,其實這個作業並沒有想像中的這麼難,主要就是將灰階的256色給轉換罷了,
如果要2色就將256色切成2種顏色,前面0~127為一種後面,128~255是一種,如果是4色的話就是將全部分成四個顏色也就是:0~64,65~127,128~192,192~255,所以主要是先確定要分幾個顏色,然後用for迴圈把顏色分段,例如0~64為同一種顏色65~127為一種顏色...等等,所以其實這次的作業並不難,再說這次我自己被自己給誤導,其實只要了解概念就可以寫得出來,而我一直認為要去上網找看有沒有人分享類似的程式碼,結果找的都是不一樣的,不過這也是一個經驗,至少知道以後必須要有一些概念與知識。