星期二, 7月 03, 2007
準備飛往東部去囉~~
呵離上次去台東和綠島應該已經有四年囉... ... ...怎麼會隔那麼久了啊,啃真是老了>__<
這次也是第二次的實驗室大出遊...真是期待啊
呵上次去基隆烤肉...那風景真是沒話說,水也清澈的見底
最棒的是還有魚來吻小腳啦~呵有空還要再去幾次
先去打包東西一下好了~回來再上來增加內容囉
星期二, 1月 23, 2007
星期六, 1月 06, 2007
GUI-WORK
程式碼
function beework
f=figure('visible','off','position',[360,500,572,504]); % 建window
hstart=uicontrol('Style','pushbutton','String','update','Position',...
[500,400,70,50],'callback',{@updatebutton_callback});% 按鈕
hpopup=uicontrol('Style','popupmenu','String',...
{'plot(x)','pie(x)','hist(y)','ezplot3(f)','polar(theta,r)','area(x,y)'}...
,'Position',[400,400,80,25]); % 選單
htext=uicontrol('Style','text','String','Select Data','Position',[400,430,80,25]); % 說明
hax=axes('Units','pixels','Position',[50,150,300,300]); % 圖window
set([f,hax,hstart,hpopup,htext],'Units','normalized');
plot(rand(5)); % 初始圖
set(f,'Name','beework GUI')
movegui(f,'center')
set(f,'Visible','on');
function updatebutton_callback(source,eventdata)
va=get(hpopup,'value'); % call 選單值
switch va;
case 1
plot(rand(5));
case 2
n=round(10*rand)+10;
pie(2:4:n);
case 3
hist(randn(1000,1));
case 4
ezplot3('t*sin(t)', 'cos(t)', 't', [0,6*pi]);
case 5
theta = linspace(0, 2*pi);
polar(theta, 3+2*rand*cos(4*theta));
case 6
y=[1 1.2 1.5 2*rand;4 4.5 6.6 7*rand;5 6.5 8 15*rand]';
area([1980 1990 2000 2008],y);
grid on;colormap cool;
end
end
end






星期五, 1月 05, 2007
雜訊去除
形態學
Opening(斷開)運算:
opening運算是先被侵蝕後再膨脹,通常是用來平滑影像輪廓,截斷窄的細頸,消除細的突支,其原理如下:
(一)膨脹:將物體的邊界往外膨脹若干像素的方法。 如下圖:

(二)侵蝕:與膨脹相反的動作,這是一種從物體的邊界上,將物體往內收縮若干像素。
如下圖:

斷開圖如下

標記法:
兩像素間關係有下述兩種性質:
(一)像素的近鄰(neighbors):
在座標(x,y)處的像素P有水平和垂直方向的近鄰,其座標為
(x-1,y),(x+1,y),(x,y+1),(x,y-1),
這樣一組像素稱P點的4-近鄰(4-nieghbors)。
P的四個對角近鄰的座標為(x-1,y+1),(x+1,y+1),(x-1,y-1),(x+1,y-1),
這些點與4-近鄰在一起,稱為P的8-近鄰(8-neighbors)。
(二)連通性(Connectivity):
像素間的連通性是用於確定影像中物體邊界和區域組成成分的重要概念。
要判斷兩個像素是否連通,必須要確定它們是否在某種意義中相鄰(比如它們是否為4-近鄰),
並且它們的灰度值是否滿足特定的相似準則,(比如灰度值是否相同)。
在此我們用V來定義連通性的灰階集合,並介紹二種類型的連通:
(a)4-連通:
若某一像素Q 位於4-近鄰( P)中,且Q和P的像素值位於所定的灰度值(V)中,則稱4-連通。
(b)8-連通:
若某一像素Q位於8-近鄰( P)中,且Q和P的像素值位於所定的灰度值(V)中,則稱8-連通。
(三)標記法原理:
標記法是使用在二值化影像,白色為255,黑色為0,p表掃描過程中之像素值;
先由左而右,再由上而下掃描影像,在此只考慮4-連通分量。
當掃描到為0的時則移動到下一掃描位置,當掃描到p為255的,並根據其連通性檢查p點的左方和上方,如果它們均為0的為話,給p一個新的標記值,如果這二個近鄰中只有一個為255,
則把它的標記給予p,如果它們都是255且標記相同,則把這個標記給予p。
如果它們都是255但標記不同,則把其中一個標記給予p,並標明這兩個標記是等價的。
掃描結束後所有值為255的點都被標記過了,但有些標記是可能是等價的,所以再對影像作第二次掃描,將所有被記錄為等價的標記值改成相同的標記。
clear all
close all
clc
a=imread('su.jpg'); % 輸入影像
[c1,c2,c3]=size(a);
b=rgb2ycbcr(a); % 轉換成ycbcr
cb=b(:,:,2);
cr=b(:,:,3);
cb(cb<=125)=255; % cb的判斷式,是人臉為白色 cb(cb~=255)=0; cr(cr>=137)=255; % cr的判斷式,是人臉為白色
cr(cr~=255)=0;
rr=and(cr,cb); % 二者相同
figure(3);imshow(uint8(rr.*255))
se=strel('disk',2);%用open過濾膚色圖像
bw= imopen(rr,se);
figure(4);imshow(bw)
%用open過濾後的圖,再用標記法來找出最大區塊
l=bwlabel(bw,8); % 標記法
stats=regionprops(l,'Area'); % 找出相同的並統計
allArea=[stats.Area];
tt=max(allArea); % 找出最大的區塊
idx=find(allArea==tt);
bw2=ismember(l,idx);
figure(5);imshow(bw2)%過濾後的人臉圖像
%執行結圖
原始圖
膚色切割圖
去除雜訊
找出最大區塊圖
失敗的例子
星期四, 1月 04, 2007
比K書更重要的事
比K書更重要的事
許多人認為我是「K書高手」。在畢業自台大之前,這句話應該算是正確的,因為我曾經得過局長獎、市長獎、品學兼優獎、書卷獎等無數獎勵。甚至,服兵役當預官時,也屢獲記功嘉獎。
等到我由台大畢業、前往日本東京留學後,才發現這個世界上,還有許多比K書更重要的事,是自己從未經歷過、也從未認真思考過的。
二十四歲那一年,我搭上飛往東京的班機,那是這輩子第一次坐飛機。從機艙的小窗戶,我看見了夕陽。我知道,明晨的天空仍會升起朝陽;但是萬萬沒有想到,自己人生的朝陽卻一直不見蹤影,我走入了人生的黑暗期,而這段黑暗期竟然長達數年之久。
我也時常在想:如果我沒有經歷這長達兩千日的黑暗期,就不會如此珍惜自己所學過的事物,也不會成為真正的「K書高手」。
大學裡學過的學科對自己最大的幫助是:讓我以高分通過日本研究所的入學考試。考試結束後,教授當面誇獎了我幾句,但那幾乎是留日最初的兩年中,教授對我唯一一次的讚美,因為我除了K書之外,對其他事物的瞭解實在乏善可陳。
留學需要說的日文,我不會。
研究需要做的實驗,我不熟。
實驗需要看的論文,我也不懂。
我會的都是課本上有寫的及老師課堂中有教的。考試不會考的及作業中沒出現過的,我都不會。
大學時曾選修了兩個學期的日文。由於教授的慷慨給分,我上學期得了一百分,下學期則得了九十九分。我懷著日文得高分的錯覺到了東京,才驚覺自己的日文程度完全不足以應付日常會話及生活所需。當年的「營養學分」帶給自己一種虛榮的滿足。等到真正赴日留學後,我的蹩腳日文,卻在生活上、學業上、人際關係上,構成了沉重的負擔和無形的障礙。
有時想想:自己是該感謝當年「送」我一百分的日
我在日本瞭解了「有用學習」的真正意義。
對工學院的學生來說,做實驗是必修課程,但我在大學時期卻很少真正動手做,大多時候都是在「寫」實驗。同組的同學多半手腳俐落,可快速做完實驗,我則精於計算,可快速得到答案。
在「天衣無縫」的配合下,我們往往是最早完成實驗的一組。我以這種模式「做」了四年的實驗。原本以為這是最聰明的方法,沒想到這其實是最糟糕的方法,因為我根本不知如何動手做實驗,更遑論要親自設計實驗。
我在日本學的第一項實驗技巧並非什麼高深的研究,而是洗燒杯。我在日本學長的面前被徹底的打敗,終於領悟到「號稱」高材生的自己真的不會洗燒杯。
如何將一只沾滿黏稠物質的燒杯徹底洗乾淨,不僅需要技巧,也需要耐心。能將燒杯洗得晶瑩剔透、沒有絲毫花紋,這不僅是從事實驗的第一步,更是成功研究的基本功。
我在日本學會了「動手實作」的精神。
在研究所中,我選擇了材料科學做為自己的發展方向,對我而言,這是全然陌生的領域。我苦苦等待教授指點迷津,告訴我該做什麼研究;教授卻什麼都不說,足足讓我等了兩年。
教授只告訴我:「你自己去找題目!」
為了找尋自己的研究題目、為了畢業、為了拿到學位,我充當起自己的老師,從最根本的學科開始自修,充實基礎知識,開始大量閱讀課外書籍和報章雜誌,積極搜尋工業資訊,嘗試瞭解產業動態,並且分析電子業界成長報告。另外,又整天在圖書館裡查閱相關期刊論文,以尋找電子產業的明日之星。
經過兩年的自修與資料收集,我終於找到了自己的論文題目,教授也欣然同意了我的選擇。
我在日本也學會了「獨立研究」的精神。
經過六年的時間,我從一個不能開口的日語「啞巴」,變成一個可在台上用流利日語報告的能手;從一個對陶瓷材料一竅不通的低手,變成一個電子材料領域的研究高手。
我很想告訴台灣未來的年輕生力軍:在吃日本拉麵、讀日本漫畫、看日本偶像劇之外,也不要忘了學習日本的達人精神。
希望莘莘學子在認真讀書之餘,也要記得世界上還有許多比讀書更重要的事。我們應該在「讀書」與「不讀書」的兩極之間求取平衡,也希望學生在計較考試分數的高低時,應當瞭解世界上還有其他更重要的無形分數,等著自己去努力追求。
許多「課本上沒有寫的」及「考試不會考的」的事,都是人生學習中很重要的一環。這是我在遠赴東京留學兩千日所得到的一個最珍貴的教訓及體驗。
by 台大化工系呂宗昕教授
星期四, 12月 28, 2006
YCBCR


cb經過判斷的圖片
cr經過判斷的圖片
只分出膚色的影像
程式碼
clear all
close all
clc
a=imread('nomo.jpg'); % 輸入影像
[c1,c2,c3]=size(a);
b=rgb2ycbcr(a); % 轉換成ycbcr
cb=b(:,:,2);
cr=b(:,:,3);
cb(cb<=125)=255; % cb的判斷式,是人臉為白色
cb(cb~=255)=0;
figure(1);imshow(cb)
cr(cr>=137)=255; % cr的判斷式,是人臉為白色
cr(cr~=255)=0;
figure(2);imshow(cr)
rr=and(cr,cb); % 找出二者都是白的
rt(:,:,1)=double(rr).*double(a(:,:,1));
rt(:,:,2)=double(rr).*double(a(:,:,2));
rt(:,:,3)=double(rr).*double(a(:,:,3));
figure(3);imshow(uint8(rt))
Precious
歌詞
心が見えなくて 不安な日もあった
kokoro ga mie nakute fuan na hi mo atta
也曾有過心看不見 驚慌的日子
誰かを愛する意味 自分なりに決めた
dareka wo aisuru imi jibun nari ni kimeta
愛人的意義 憑自己決定
すべてを信じくこと
subete wo shinji nuku koto
堅信一切
I promise you もう迷わない
I promise you mou mayowa nai
I promise you 再也不逃避
強くなる… あなたに証すよ
tsuyoku naru... anata ni akasu yo
要堅強起來… 向你證明
逃げないで 向き合っていく
nige nai de muki atte iku
別逃避 勇敢面對
姿を見せてくれた to heart
sugata wo misete kureta to heart
讓我看見你 to heart
信じよう ふたりだから 愛しあえる
shinji you futari dakara aishiaeru
相信吧 因為有伴 所以能愛
あの空へ 願いがくように 見つめあい 祈る two of us
ano sora e negai ga todoku you ni mitsume ai inoru two of us
就像心願飛向天 注視彼此 祈禱 two of us
ふたつ重ねた想いが 今 ひとつの形にわる
futatsu kasaneta omoi ga ima hitotsu no katachi ni kawaru
交會的心意 如今 正漸漸合而為一
Your precious love
傷つき 苦しむなら
kizutsuki kurushimu nara
傷害 痛苦
分けあって 抱きしめ合おう
wake atte dakishime aou
且彼此分擔 互相擁抱
もうひとりじゃないから
mou hitori ja nai kara
因為不再孤獨
全てを受け止めるよ true love
subete wo uketomeru yo true love
所以能承受一切 true love
信じよう ふたりだから 愛しあえる
shinji you futari dakara aishiaeru
相信吧 因為有伴 所以能愛
永遠に つないだ この手をもう 離さない 誓う two of us
eien ni tsunaida kono te wo mou hanasa nai chikau two of us
永遠相繫的這雙手 發誓再也不會分開 two of us
ふたつ重ねた想いが 今 ひとつの形にわる
futatsu kasaneta omoi ga ima hitotsu no katachi ni kawaru
交會的心意 如今 正漸漸合而為一
Just the two of us
幼かった ひとりよがりの愛
osanakatta hitori yogari no ai
年少時 獨善其身的愛
今は 強く信じあえる
ima wa tsuyoku shinji aeru
如今已是堅定的互信
There can be truth
新しい始まり
atarashii hajimari
新的開始
I want to be one with you
信じよう ふたりは 今 愛しあい 此にいる
shinji you futari wa ima aishiai koko ni iru
相信吧 你我此刻 在此相愛
光が ちるように 抱きしめる あなたを
hikari ga michiru you ni dakishimeru anata wo
如同光輝滿室 我緊緊擁抱你
信じよう ふたりだから 愛しあえる
shinji you futari dakara aishiaeru
相信吧 因為有伴 所以能愛
あの空へ 願いがくように 見つめあい 祈る two of us
ano sora e negai ga todoku you ni mitsume ai inoru two of us
就像心願飛向天 注視彼此 祈禱 two of us
ふたつ重ねた想いが 今 ひとつの形にわる
futatsu kasaneta omoi ga ima hitotsu no katachi ni kawaru
交會的心意 如今 正漸漸合而為一
Your precious love
星期五, 12月 22, 2006
膚色切割器
要是沒先把膚色給分類出來並加以定位人臉的的位置,
則會影響接下來的辨識結果.
切割膚色有很多的分法,這個切割器我是使用ycbcr的方法來做為偵察.
為什麼使用ycbcr呢:
因為RGB的色彩空間很容易受到光源的影響而有明顯的變化,
而使在設定顏色的分割值,會有很大的大的誤差.
又因為ycbcr有良好的亮度和色度分離的特特(彩度)所以我就使用它.
在此Y 代表亮度,Cb和CR都代表色度(彩度) 轉換公式如下
但在matlab你不用建立上式,只要打rgb2ycbcr('檔案')轉換就可以了
%----程式碼-----
clear all
close all
clc
a=imread('nomo.jpg'); % 輸入影像
b=rgb2ycbcr(a); % 轉換成ycbcr
cb=b(:,:,2);
cr=b(:,:,3);
cb(cb<=125)=255; % cb的判斷式,是膚色為白色
cb(cb~=255)=0;
figure(1);imshow(cb)
cr(cr>=137)=255; % cr的判斷式,是膚色為白色
cr(cr~=255)=0;
figure(2);imshow(cr)
rr=and(cr,cb); % 找出二者都是白的
rt(:,:,1)=double(rr).*double(a(:,:,1));
rt(:,:,2)=double(rr).*double(a(:,:,2));
rt(:,:,3)=double(rr).*double(a(:,:,3));
figure(3);imshow(uint8(rt))
%--------------結果----------
原影像圖,如下
分割後的cb影像,如下
分割後的cr影像,如下
只秀出膚色圖
以上就是建立膚色切割器的基礎公式
由上方的圖可知,這些影像還一些小雜點,在這我用形態學中的Opening operation來消除雜點
雜訊去除
形態學
Opening(斷開)運算:
opening運算是先被侵蝕後再膨脹,通常是用來平滑影像輪廓,截斷窄的細頸,消除細的突支,
其原理如下:
(一)膨脹:將物體的邊界往外膨脹若干像素的方法。 如下圖:
(二)侵蝕:與膨脹相反的動作,這是一種從物體的邊界上,將物體往內收縮若干像素。
如下圖:
斷開圖如下
標記法:
兩像素間關係有下述兩種性質:
(一)像素的近鄰(neighbors):
在座標(x,y)處的像素P有水平和垂直方向的近鄰,其座標為
(x-1,y),(x+1,y),(x,y+1),(x,y-1),
這樣一組像素稱P點的4-近鄰(4-nieghbors)。
P的四個對角近鄰的座標為(x-1,y+1),(x+1,y+1),(x-1,y-1),(x+1,y-1),
這些點與4-近鄰在一起,稱為P的8-近鄰(8-neighbors)。
(二)連通性(Connectivity):
像素間的連通性是用於確定影像中物體邊界和區域組成成分的重要概念。
要判斷兩個像素是否連通,必須要確定它們是否在某種意義中相鄰(如它們是否為4-近鄰),
並且它們的灰度值是否滿足特定的相似準則,(如灰度值是否相同)。
在此我們用V來定義連通性的灰階集合,並介紹二種類型的連通:
(a)4-連通:
若某一像素Q 位於4-近鄰( P)中,且Q和P的像素值位於所定的灰度值(V)中,則稱4-連通。
(b)8-連通:
若某一像素Q位於8-近鄰( P)中,且Q和P的像素值位於所定的灰度值(V)中,則稱8-連通。
(三)標記法原理:
標記法是使用在二值化影像,白色為255,黑色為0,p表掃描過程中之像素值;
先由左而右,再由上而下掃描影像,在此只考慮4-連通分量。
當掃描到為0的時則移動到下一掃描位置,當掃描到p為255的,並根據其連通性檢查p點的左方和上方,
如果它們均為0的為話,給p一個新的標記值,如果這二個近鄰中只有一個為255,
則把它的標記給予p,如果它們都是255且標記相同,則把這個標記給予p。
如果它們都是255但標記不同,則把其中一個標記給予p,並標明這兩個標記是等價的。
掃描結束後所有值為255的點都被標記過了,但有些標記是可能是等價的,
所以再對影像作第二次掃描,將所有被記錄為等價的標記值改成相同的標記。
新增加的程式碼
se=strel('disk',2);%用open過濾膚色圖像
bw= imopen(rr,se);
figure(4);imshow(bw)
%用open過濾後的圖,再用標記法來找出最大區塊
l=bwlabel(bw,8); % 標記法
stats=regionprops(l,'Area'); % 找出相同的並統計
allArea=[stats.Area];
tt=max(allArea); % 找出最大的區塊
idx=find(allArea==tt);
bw2=ismember(l,idx);
figure(5);imshow(bw2)%過濾後的人臉圖像
%----------------------------------------------------
GUIDE
首先把一張rgb的照片轉成ycbcr(y代表亮度,cb代表色度(blueness),cr也代表色度(redness))
然後我們可以使用slider來調整y cb cr的範圍,使它只出現膚色的範圍
即可達到膚色分割了
花蓮的海豚
































