星期六, 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 台大化工系呂宗昕教授

花蓮的海豚

花蓮的海豚