Professional Documents
Culture Documents
บทที่ 1
บทนํา
1.1 ที่มาและความสําคัญของโครงการ
การตรวจเลือดเปนขั้นตอนที่สําคัญขั้นตอนหนึ่งในการตรวจรางกายและวินิจฉัยโรค ในปจจุบันการ
วินิจฉัยโรคทางการแพทยสวนใหญจะใชการตรวจนับจํานวนเม็ดเลือด และตรวจหาเซลลเม็ดเลือดที่
ผิดปกติ เชน การวินิจฉัยโรคไขมาลาเรีย มะเร็งเม็ดเลือดขาวและโรคโลหิตจาง โดยอาศัยเครื่องมือทาง
การแพทย เครื่องมือตรวจนับที่นิยมใชในปจจุบันใชหลักการของ Laser light scatter, Electrical
impedance, Light scatter / absorption และ Radio frequency energy ซึ่งบางวิธีมีความแมนยําสูงและ
สามารถแยกแยะเม็ดเลือดบางชนิดได แตเครื่องมือเหลานี้มีราคาแพงและไมสามารถวิเคราะหรูปรางของ
เม็ดเลือดได ดังนั้นการตรวจวิเคราะหรูปรางของเม็ดเลือดสวนใหญจะตรวจผานสายตาของผูชํานาญการ
ดานโลหิตวิทยา ซึ่งวิธีดังกลาวนี้ไมสะดวก กินเวลาและตองอาศัยผูเชี่ยวชาญ รวมทั้งตองใชงบประมาณสูง
อุปสรรคดังกลาวทําใหการวิเคราะหตรวจนับเม็ดเลือดสามารถกระทําไดตามโรงพยาบาลในเมืองใหญๆ
เทานั้น
จากขอจํากัดที่กลาวมา โครงการโปรแกรมตรวจนับเม็ดเลือดแดง จึงไดนําเสนอแนวความคิดใหม
ในการพัฒนาระบบที่ชวยตรวจนับเซลลเม็ดเลือดแดง โดยอาศัยวิธีการประมวลผลภาพเชิงดิจิตอลเปนหลัก
ระบบที่พัฒนาขึ้นไดถูกออกแบบใหใชกับกลองจุลทรรศน ซึ่งมีประจําตามโรงพยาบาลทั่วไป ในสวนของ
Software โปรแกรมจะทําการแยกแยะชนิดและนับจํานวนเม็ดเลือดแดงไดโดยอัตโนมัติ โปรแกรมที่
ออกแบบขึ้นมานี้สามารถนําไปติดตั้งใชงานตามโรงพยาบาลทองถิ่นที่หางไกลความเจริญและขาดแคลน
ผูเชี่ยวชาญดานโลหิตวิทยา ซึ่งจะประหยัดบุคลากรและงบประมาณ และทําใหการบริการสาธารณสุข
เขาถึงชุมชนที่หางไกลได
1.2 วัตถุประสงค
เพื่อพัฒนาโปรแกรมตรวจนับเซลลเม็ดเลือดแดงและแยกแยะเซลลเม็ดเลือดแดงที่ผิดปกติโดย
อัตโนมัติโดยอาศัยการประมวลผลภาพทางดิจิตอล เพื่อนําไปใชประโยชนในทางการแพทยในการตรวจ
วินิจฉัยโรค
1.3 ขอบเขต
โครงการนีเ้ ปนการพัฒนาโปรแกรมตรวจนับเซลลเม็ดเลือดแดงอัตโนมัติโดยมีคุณลักษณะดังนี้
1. โปรแกรมสามารถเปดอานไฟลภาพถายของเม็ดเลือดหรือรับภาพโดยตรงจากกลองจุลทรรศน
2
1.4 แนวทางการดําเนินงาน
โปรแกรมนี้จะทําการนับจํานวนเม็ดเลือดแดงและแยะแยะเซลลเม็ดเลือดแดงที่ผิดปกติออกจาก
เซลลที่ปกติโดยอัตโนมัติ พรอมรายงานผลออกทางหนาจอคอมพิวเตอร เพื่อที่จะไดนําไปวิเคราะหและ
วินิจฉัยโรคในทางการแพทยตอไป ซึ่งมีแนวทางการดําเนินงานดังนี้
1.4.1 ศึกษาลักษณะทางกายภาพของเม็ดเลือด
ปกติ แ ล ว เม็ ดเลื อ ดแดงจะมี ชนิ ดเดีย ว แตจ ะมี ทั้ง เซลล เ ม็ ด เลื อ ดที่ ป กติ แ ละผิ ด ปกติ ดั ง นั้ น จึ ง
จําเปนตองศึกษารายละเอียดในเรื่องรูปราง ขนาดของเม็ดเลือดแดงทั้งแบบปกติและผิดปกติ รวมถึงศึกษา
วิธีการวิเคราะหเซลลเม็ดเลือดแดงในทางการแพทย และขั้นตอนตางๆที่จําเปนในการวิเคราะห เพื่อจะใช
เปนประโยชนในการเขียนโปรแกรมตอไป
1.4.2 ศึกษาการรับภาพถายจากกลองจุลทรรศน
เนื่องจากภาพเม็ดเลือดแดงที่ทางการแพทยใชวิเคราะหไดมาจากการสองดูดวยกลองจุลทรรศน
ดังนั้นเราจําเปนตองเขียนโปรแกรมใหสามารถรับภาพจากกลองจุลทรรศน เพื่อนําไปประมวลผลตอไป
นอกจากนี้โปรแกรมจะตองเปดอานไฟลภาพไดในกรณีที่มีไฟลภาพเม็ดเลือดแดงอยูแลวและโปรแกรมตอง
สามารถแสดงภาพบนจอคอมพิวเตอรได
1.4.4 ออกแบบพัฒนาโปรแกรมโปรแกรมจดจําชนิดเม็ดเลือดโดยใชโครงขายประสาทเทียม
(Neural network) เปนสวนสําคัญที่ใชในการจดจํารูปแบบของเม็ดเลือด
เมื่อไดภาพเม็ดเลือดตนแบบที่มีรูปรางและขนาดแตกตางกันแลว เราจะฝกให Neural network จํา
จดและแยกแยะเซลลแตละประเภท พรอมกับนับจํานวนไปดวย โปรแกรมในสวนนี้จะใชทําหนาที่วิเคราะห
แยกแยะขอมูลภาพเม็ดเลือดแดง
3
1.4.5 พัฒนาสวนรายงานผล
เมื่อไดโปรแกรมที่สามารถนับจํานวนและแยกแยะเซลลเม็ดเลือดแดงไดแลว เราจะสรางสวน
แสดงผลเพื่อใหรายงานผลขอมูลตาง ๆ ในรูปแบบที่งายตอการเขาใจของผูใช
ตารางที่ 1 แนวทางการดําเนินงาน
เดือน
กิจกรรม มิ.ย. ก.ค. ส.ค. ก.ย. ต.ค. พ.ย. ธ.ค. ม.ค.
1. ศึกษาลักษณะทางกายภาพและชนิดของ
เม็ดเลือด รูปรางเม็ดเลือดทีผ่ ิดปกติ และ
วิธีการวิเคราะหเซลลเม็ดเลือดแดงในทาง
การแพทย
2. ศึกษาระบบถายภาพจากกลองจุลทรรศน
และระบบรับภาพเขามายังคอมพิวเตอร
3. ศึกษาวิธกี ารแยกแยะภาพเม็ดเลือดแดง
โดยใชวิธี Image segmentation
4. ศึกษาอัลกอริทึมที่ใชในการนับและ
วิเคราะหรูปรางเซลลเม็ดเลือดแดง
5. ออกแบบและพัฒนาโปรแกรม
6. ทดลองใชงานโปรแกรมจริง
7. เขียนสรุปรายงาน
1.5 ประโยชนที่คาดวาจะไดรับ
ไดโปรแกรมที่ใชในการตรวจนับและวิเคราะหเซลลเม็ดเลือดแดง รวมทั้งแยกแยะเซลลเม็ดเลือด
แดงที่ผิด ปกติ โ ดยอั ต โนมั ติ ที่ สามารถนําไปติดตั้ง ใชง านจริงได ซึ่งผู ใช ง านจะเป น ผูเ ลือ กมุม มองการ
ถายภาพเองจากกลองจุลทรรศน โดยโปรแกรมจะคํานวณและรายงานผลใหอัตโนมัติ
4
บทที่ 2
งานวิจัยและทฤษฎีที่เกี่ยวของ
2.1 งานวิจัยที่เกี่ยวของ
มีงานวิจัยทีเ่ กีย่ วกับการตรวจนับและแยกแยะประเภทของเซลลเม็ดเลือด ดังนี้
2.1.1 Segmentation and classification of human blood cells โดย Daniel Elvin, E-91 , Advisor:
Anders Heyden, Gunnar Sparr.
งานวิจัยนี้ไดศึกษาการแยกแยะเซลลเม็ดเลือดขาว (White blood cell) หรือ Leukocyte ที่
ประกอบดวย 3 ขั้นตอนโดยเริ่มจากการใช Image processing จากนั้นเปนการจดจํารูปแบบเซลล
(Pattern recognition) ที่ใชอัลกอริทึม Unsupervised optimal histogram, การหาคา Thresholding, การ
ระบุตําแหนงนิวเคลียสของ Leukocyte และการตรวจหา Leukocyte cytoplasm ในขั้นตอนสุดทายเปน
การแยกแยะประเภทของเซลลที่ใชหลักการของ Artificial neural network นอกจากนี้ยังมีการประมาณ
พื้นที่และการกระจายของรูปรางของ Erythrocyte (Red blood cell) ซึ่งจะใชอัลกอริทึมการ
Segmentation อยางงายและการประมาณพื้นที่เสนรอบวง ภาพที่ใชในงานวิจัยนี้เปนภาพสไลดของเลือด
ที่สเมียรแลวถายโดยผานกลอง CCD ที่ตอกับกลองจุลทรรศนกําลังขยาย 20 เทา
วิจารณงานวิจัย
งานวิจยั นี้ไดใหแนวความคิดในการแยกแยะเซลลเม็ดเลือด ซึ่งสวนใหญจะเนนที่เม็ดเลือดขาว แต
จะสังเกตวางานวิจยั นี้ไมไดใหรายละเอียดการแยะแยะเม็ดเลือดแดงในลักษณะอืน่ เชน การระบุรูปราง
หรือขนาดเซลล ซึ่งแตกตางจากการประยุกตใชงานในโครงการโปรแกรมตรวจนับเม็ดเลือดแดงในโครงการ
นี้ที่ใชวิธีการแยะแยะเม็ดเลือดแดงโดยแบงตามขนาดและรูปรางที่ผิดปกติเขาไปดวย ในสวนการ Capture
ภาพจากสไลดเลือดที่สเมียรแลวโดยผานกลอง CCD ที่ตอกับกลองจุลทรรศนนนั้ ในงานวิจยั นี้อาศัย
Software ที่มากับกลองจุลทรรศนใหทําการ Capture และแสดงผลทางคอมพิวเตอร
2.1.2 White blood cell differential counting using neural network with system-level training โดย
Dr. Nipon Theera-Umpon , Chiang Mai University.
งานวิจัยนี้เปนเรื่องที่เกี่ยวกับการนับเซลลเม็ดเลือดขาวโดยมีการฝกใหโครงขายประสาทเทียมนับ
เม็ดเลือดขาวโดยใหเกิดความผิดพลาดนอยที่สุด โครงขายประสาทเทียมที่ใชเปน Feed forward network
และใช Back propagation ในการปรับ Weight มีการใชรูปรางขอบของแตละเซลลเปนขอมูลทําให
แยกแยะเซลลไดหลายลักษณะ ผลสรุปที่ไดจากงานวิจัยคือโครงขายประสาทเทียมสามารถนับจํานวน
เซลลเม็ดเลือดขาวไดถูกตองมากกวาการใหโครงขายประสาทเทียมแยกแยะประเภท นั่นคือประสิทธิภาพ
5
การแยกประเภทของเซลลเม็ดเลือดโดยใชโครงขายประสาทเทียมจะไมดีเทาที่ควร จุดประสงคหลักจึงเนน
ที่การนับจํานวนใหไดผลถูกตอง
วิจารณงานวิจัย
จะเห็นวางานวิจัยนี้ไมไดทดลองกับเม็ดเลือดแดง แตใชแนวคิดในการนับจํานวนและแยกแยะ
ประเภทดวยโครงขายประสาทเทียม ซึ่งเปนแนวทางที่นําศึกษาและนํามาประยุกตใชกับโครงการได สวน
ขอบกพรองของงานวิจัยคือการแยกแยะประเภทยังไมดีเทาที่ควร ซึ่งเปนปญหาที่ผูพัฒนาโครงการคิดวา
นาจะแกไขไดในโครงการนี้
2.2 ทฤษฎีหลักการและเทคนิคที่ใช
การพัฒนาโปรแกรมตรวจนับเม็ดเลือดแดงอัตโนมัติเริ่มตั้งแตการศึกษาลักษณะทางกายภาพและ
ชนิดของเม็ดเลือดแดงที่ปกติและผิดปกติ จากนัน้ จึงวิเคราะหรูปรางและขนาดของเซลลโดยอาศัยหลักการ
ของ Image processing และเทคนิคในขั้นตอนสุดทายจะเปนการจดจํารูปราง (Pattern) ของเซลลเม็ด
เลือดแดงโดยใชโครงขายประสาทเทียมเพือ่ ที่จะไดทาํ การนับและแยกแยะตอไป
2.2.1 เซลลเม็ดเลือดแดง (Blood cells)
โครงการนีจ้ ะนับจํานวนและแยกแยะชนิดเซลลเม็ดเลือดแดงที่ผิดปกติและเซลลทปี่ กติ โดยในทาง
การแพทยสวนใหญจะนิยมเอาเม็ดเลือดแดงในชวง Mature มาตรวจนับ ซึ่งลักษณะของเม็ดเลือดแดงปกติ
(Normal) จะมีขนาด 7-8 µm เมื่อยอมสีจะพบวาติดสีชมพู โดยบริเวณที่ติดสีจางตรงกลาง (Central
pallor) ไมเกิน 1/3 ของเซลล และมีรูปรางกลม
สวนเม็ดเลือดแดงที่ผิดปกติ (Abnormal) จะมีความผิดปกติในหลายลักษณะ แตในโครงการนีจ้ ะ
ทําการแยกแยะความผิดปกติในสวนของขนาด (Anisocytosis) และรูปราง (Poikilocytosis)
∂2 P ∂2 P
∇2 P = +
∂x 2 ∂y 2
10
20
40
60
80
100
120
140
160
180
200
50 100 150 200 250
20 20
40 40
60 60
80 80
100 100
120 120
140 140
160 160
180 180
200 200
50 100 150 200 250 50 100 150 200 250
4. วิธีการแบงแยกภาพโดยใชแบบจําลองการเคลื่อนที่ของอนุภาคในสนามเวคเตอร
แบบจําลองนีน้ ําเสนอโดยอาจารยนวภัค เอื้ออนันต [6] โดยมีหลักการดังนี้
กําหนดให
∂P ˆ ∂P ˆ ..........(1)
∇P = i+ j
∂x ∂y
) ∂P ) ∂P )
e = i− j ……..(2)
∂x ∂y
สนามเวคเตอรขอบนี้จะมีลกั ษณะเหมือนกระแสน้ําไหลวนรอบวัตถุในรูปภาพ ดังแสดงใน
รูปที่ 2.18 เมือ่ นําอนุภาคจําลองไปปลอยไวในสนามเวคเตอรขอบนี้ โดยมีสมการคํานวณตําแหนง
ของอนุภาคจําลองดังนี้
ϖ ϖ
k
p = p + α eϖ
k −1 k −1
……….(3)
r
pk −1 ตําแหนงในอดีตของอนุภาคที่เวลา k-1
r
pk คือตําแหนงปจจุบันของอนุภาคที่เวลา k
r
ek −1 คือ Edge vector field ณ ตําแหนงที่เวลา k − 1
α คือคาคงที่ α > 0
เสนทางการโคจรของอนุภาคในสนามเวคเตอรขอบ จะมีลักษณะเปนทางเดินรูปกนหอย
ดังรูปที่ 2.19 แตเมื่อเพิม่ สนามเวคเตอรแบบบีบอัด (Normal compressive vector field) ซึ่ง
คํานวณไดจาก
ϖ 1 2
n = ∇ .∇ P ……….(4)
2
เขามาในแบบจําลอง สมการการเคลื่อนทีข่ องอนุภาคจําลองจะเปน
ϖ ϖ ϖ ϖ ………..(5)
P = P +α e + β n
k k −1 k −1 k −1
สนามเวคเตอรแบบบีบอัดที่เพิ่มเขามา จะทําใหอนุภาคเคลื่อนที่ไปตามขอบของวัตถุอยาง
ถูกตอง โดยไมเกิดทางเดินรูปกนหอยดังแสดงในรูปที่ 2.21
12
ตําแหนงเริ่มตนของอนุภาค
r
∇P ∇2 P n
รูปที่ 2.20 สนามเวคเตอรแบบบีบอัด (Normal compressive vector field)
13
อนุภาคโคจรรอบวัตถุตาม
เสนทางเดียว
ตําแหนงเริ่มตนของอนุภาค
Layer N-1
Connections
N-layer network
g(w y )
( h −1) ( h −1) ( h −1) ( h −1)
+θ i
(h)
y y y w y
(h) ( h) (h) ( h) (h)
= i ,1
+ wi , 2 + wi ,3 +Λ i,m
i 1 2 3 m
g(w y )
( h −1)
+θ i
(h) (h)
= i, j j
โดยที่ y (h )
i
คือ Output ของโหนดที่ i ของ Layer h
w
(h)
i ,1
คือ Weight ที่เชื่อมตอระหวางโหนดที่ j ของ Layer h-1 กับโหนดที่ i ของ
Layer h
θ
h
i
คือ Bias ของโหนดที่ i ของ Layer h
15
O = [O , O , Κ , O ] 1
= Desired output pattern
2 n
δ ˆ
(N )
i
= Oi − O
i
( N −1)
∆W = α ⋅ δ i ⋅ g ' (hi ) ⋅
( N −1)
y
(N ) (N )
ij j
และ y
( N −1)
j
คือ Output จากโหนดที่ j ใน Layer ที่ N-1
สวนคาการปรับ Weight (W ) ใน Hidden layer (Layer k) คํานวณไดจาก(k )
ij
( k −1)
∆W = α ⋅δ i ⋅ y
(k ) (k )
ij j
δ = g'(h(k )) ∑W δ
(k ) ( k =1) ( k +1)
i i j
ji i
บทที่ 3
การออกแบบโปรแกรม
กลอง CCD
กลองจุลทรรศน
คอมพิวเตอร
รูปที่ 3.2 โครงสรางของอุปกรณ
3.2 การทํางานของสวนประมวลผล
สวนนี้ประกอบดวยกระบวนการ Segmentation เพื่อแยกภาพเม็ดเลือดแดงโดยใชการประมวลผล
ภาพเชิงดิจิตอลและการจดจําและแยกแยะเม็ดเลือดแดงโดยใชโครงขายประสาทเทียมใหไดออกมาเปน
เปอรเซ็นตของเม็ดเลือดแดงแตละชนิด
3.2.1 สวนของการ Segmentation
ในสวนของการ Segmentation นั้นผูจัดทําโครงการไดดําเนินการอยู 2 ขั้นตอนคือ ทดลอง
เขียน Code โดย Matlab เพื่อหาวิธที ี่ดีทสี่ ุดกอน แลวจึงเขียน Code ดวย C++ ทีเ่ ลียนแบบการ
ทํางานจาก Code ของ Matlab ที่ไดทดลองมาแลว โดยในสวน Code ของ Matlab มีขั้นตอนการ
ทํางานของโปรแกรมดังนี้
- Load ไฟลภาพเซลลเม็ดเลือดขึ้นมาแปลงภาพแบบ RGB เปนภาพแบบ Gray scale
แลวแปลงใหเปนขอมูลภาพชนิด Double
- ทําการปรังปรุงภาพโดยใช High boost filter เพื่อทําใหขอบของเม็ดเลือดชัดเจนมากขึ้น
19
- นําภาพที่ผา น High boost filter มาทํา Lapacian image แลวทํา Gradient image เพื่อ
ใชในการตรวจจับขอบของเม็ดเลือด
- Gradient image ที่ไดจะมีจุดสวางอยูบริเวณขอบของภาพอันเปนผลจากการทํา Circular
convolution จึงตองตัดขอมูลภาพบริเวณขอบของภาพทิง้ ไป
- ทํา Gradient adaptive threshold เพือ่ หาคา Threshold ที่เหมาะสมโดยอัตโนมัติ กับ
ภาพ Gradient image จากนัน้ จึงทํา Erosion เพื่อกัดใหขอบเม็ดเลือดมีขนาดบางลง
ภาพ Gradient image ที่ผานการทํา Thresholding นี้จะถูกนําไปใชในการหาจุดเริ่มตน
ในการทํา Boundary extraction ตอไป
- นําภาพที่ไดจากขั้นตอนที่ 5 ไปใส Label ใหขอบของเม็ดเลือดแตละเซลล โดยจะสแกน
ทุก ๆ Pixel ถาเจอคา Gradient ที่สงู สุดของขอบของเม็ดเลือดแตละเซลล ก็จะใส Label
ใหและจะทํา Region growing ใส Label ไปจนครบขอบเม็ดเลือดนั้น แลวจึงไปเริ่มตนทํา
เชนเดิมกับขอบของเม็ดเลือดใหม โดยเพิม่ คา Label ไปเรื่อย ๆ จนครบทุกเม็ดเลือด
- นําผลลัพธจากการทํา Label ภาพ มาทํา Boundary extraction โดยใหจุดเริ่มตนของการ
ทํา Boundary extraction อยูที่จุดที่มีคา Gradient สูงสุดภายใน Label แตละ Label โดย
ใหมีการเดินรอบขอบ 2 เสนทางเพื่อใหไดเสนขอบของภาพเม็ดเลือดทีส่ มบูรณ
- นําภาพเสนขอบที่ไดจากการทํา Boundary extraction มาทํา Region filling ใหกบั เซลล
เม็ดเลือดแตละ Label ใหเปน Label เดียวกันทัง้ เม็ด แลวดึงภาพเม็ดเลือดแตละ Label
ไปเก็บใน Array เพื่อนําไปเปนเม็ดเลือดตนแบบ
CImage tx,ty,nx,ny,grad,att;
CIntArray EdgeMap;
// Compute V-fields
ImageGenerateVFieldsConv(src,tx,ty,nx,ny,grad,att,EdgeMap,di
fmask_minscale,difmask_maxscale,difmask_stepscale,bndfcn_type,bnd
fcn_fixf1,bndfcn_fixf2,bndlocalf_type,bndmark_att);
p0_list.FindLocalMaximumPointInLabeledMap(grad.m_data,
grad.m_size.m_row,grad.m_size.m_col,EdgeMap.m_data,5);
grad.Clear();
CTrajectoryMap tmap;
bndext_1stbnd = p0_list.m_nelement;
EdgeMap.Init(0);
21
bnd.Extract(tx,ty,nx,ny,att,bndinterp_mode,tmap,EdgeMap,p0_l
ist,bndext_dir,bndext_delay,bndext_step,bndext_normnstep,bnd
ext_stpmode,bndext_1stbnd,bndext_percent,bndmark_mode,bndmar
k_dist);
bnd.LabelArea(dest,EdgeMap);
ExtractRegionBoundary(bnd, dest, cellinf);
return bnd.m_face_list.m_nelement;
}
int AllBoundary2Way(CIntArray &dest, CImage &src, CBoundaryData
&bnd,CElementLinkListwithSort <CCellData> &cellinf)
{
int nrow = src.m_size.m_row;
int ncol = src.m_size.m_col;
BOOL ok = dest.AllocSameSize(src);
if (!ok)
return -1;
##----------------------------------------------#
Type of training method
# GRADIENT Neural=Network
0, GRADMOMENT
Configuartion= 1File
#----------------------------------------------#
# A line begin with # is a comment line
0#----------------------------------------------#
#----------------------------------------------#
# No. of layers
##----------------------------------------------#
Type of Initialization
#3 RANDOM 0, READFROMFILE 1
#----------------------------------------------#
0# No. of nodes in each layer
#----------------------------------------------#
#5 30Learning
1 Rate
#----------------------------------------------#
0.00001
# Type of activation function of each layer
#----------------------------------------------#
# INPUT = 0, LOGSIG = 1, TANSIG = 2, LINEAR = 3
##----------------------------------------------#
Maximum number of iterations
#----------------------------------------------#
033
10000
#----------------------------------------------#
#----------------------------------------------#
# Maximum mean square error
#----------------------------------------------#
0.1
24
- ผูใชเปนผูเตรียมขอมูลตนแบบเพื่อใชฝกโครงขายประสาทเทียมโดยในสวนนีม้ ีการเก็บ
ขอมูลของเม็ดเลือดแดงประเภทตางๆ เพื่อใชเปน Input node ในการ Train ใน โครงขาย
ประสาทเทียมซึ่งผูพัฒนาจะระบุดวยตัวเองจาก Dialog select type
void CRBCCountDlg::OnButtonProcessnet()
{
double err;
int sumResalt_Aniso,sumResalt_Poiki,sumResalt_Normal;
บทที่ 4
การพัฒนาโปรแกรม
Bitmap
2. DisplayCapturedBits(BYTE *pBuffer, BITMAPINFOHEADER
*pbih) เปนฟงกชน
ั ที่ใชแสดงภาพที่ไดจากการ Capture บน Window ที่ใช Preview
ภาพ
29
4.2 ขอบเขตและขอจํากัดของโปรแกรมที่พัฒนา
4.2.1 ขอบเขตของโปรแกรม
โครงการนีเ้ ปนการพัฒนาโปรแกรมตรวจนับเซลลเม็ดเลือดแดงอัตโนมัติโดยมีคุณลักษณะดังนี้
1. โปรแกรมสามารถเปดอานไฟลภาพถายของเม็ดเลือดหรือรับภาพโดยตรงจากกลองจุลทรรศน
2. โปรแกรมสามารถจําแนกเซลลเม็ดเลือดระหวางเซลลทปี่ กติกับเซลลที่ผิดปกติ รวมทั้งรายงาน
จํานวนเปนเปอรเซ็นตและรายงานแบบทางการแพทย
4.2.2 ขอจํากัดของโปรแกรมทีพ
่ ัฒนา
โปรแกรมยังไมสามารถจดจําและแยกแยะเม็ดเลือดแดงที่ผิดปกติไดครอบคลุมทุกประเภท
4.2.3 คุณลักษณะของอุปกรณที่ใชกับโปรแกรม
1. Windows XP
2. CPU 400 MHz ขึ้นไป
3. Harddisk
4. RAM 128 MB
5. Keyboard
6. Mouse
7. กลอง CCD
8. Case ที่มี Port USB
9. กลองจุลทรรศน
4.2.4 กลุมผูใช
ตามวัตถุประสงคที่ตั้งไวกลุม ผูใชจะเปนนักศึกษาหรืออาจารยทางดานการแพทยหรือเทคนิค
การแพทย รวมถึงเจาหนาที่ตามโรงพยาบาลตางๆ ทีจ่ ําเปนตองมีการวินิจฉัยโรคโดยการนับและแยกแยะ
เซลลเม็ดเลือดแดง แตในภาคการศึกษาของวิชาโครงการนี้ยังพัฒนาไมถึงระดับที่จะนําไปใชงานไดจริง ยัง
เปนเพียงแคงานวิจัย ดังนั้นกลุมผูใชจึงเปนผูที่สนใจศึกษาในเรื่องของนับจํานวนและแยกแยะประเภทเซลล
หรือวัตถุอื่นๆ โดยอาศัยหลักการของโครงขายประสาทเทียม
31
บทที่ 5
ตัวอยางการใชโปรแกรม
5.1 การใชงานโปรแกรม
การใชโปรแกรมตรวจนับเม็ดเลือดแดงนี้ยังถือวาอยูในระดับของงานวิจยั ซึ่งโปรแกรมยังไม
สมบูรณเพียงพอที่จะนําไปติดตั้งและใชงานจริงตามโรงพยาบาลทั่วไป โดยลักษณะการใชโปรแกรมนี้มี
ขั้นตอนการทดลองที่สําคัญดังนี้
5.1.1 สวน INPUT
เมื่อเปดโปรแกรมจะพบกับหนาตางของโปรแกรมดังรูปขางลาง
จากนั้นจึงเลือกไฟลที่ตองการนําไปประมวลผล ภาพที่ไดจากการเปดไฟลแสดงดังรูปที่
5.3 ซึ่งเราสามารถจะเลื่อน Scrollbar หรือกดปุม เพื่อดูรายละเอียดของภาพได
33
5.1.2 สวนของการทดลองและประมวลผล
ในสวนของการประมวลผลนัน้ โปรแกรมจะแบงงานออกเปน 2 สวน คือ
1. สวนของ Image segmentation จะทํางานเมื่อกดปุม ซึ่งผลของการทํางานจะ
แสดงดังรูปที่ 5.4
34
5.1.3 สวนของการรายงานผล
โปรแกรมนี้จะมีการรายงานผล 2 รูปแบบคือ
1. การนับเซลลเม็ดเลือดแดงทีป่ กติและผิดปกติของแตละประเภท (ผิดปกติทางขนาด 2 ประเภท
และผิดปกติทางรูปราง 9 ประเภท)ในรูปของเปอรเซ็นตจากจํานวนเซลลทั้งหมด
2. ผลของการวิเคราะหภาพเซลลเม็ดเลือดโดย
- ถาผิดปกตินอยกวา 5 เปอรเซ็นตถือวาปกติ
- ถาผิดปกติอยูร ะหวาง 6-10 เปอรเซ็นตแทนดวย Few
- ถาผิดปกติอยูร ะหวาง 11-25 เปอรเซ็นตแทนดวย 1+
- ถาผิดปกติอยูร ะหวาง 26-50 เปอรเซ็นตแทนดวย 2+
- ถาผิดปกติอยูร ะหวาง 51-75 เปอรเซ็นตแทนดวย 3+
- ถาผิดปกติอยูร ะหวาง 76-100 เปอรเซ็นตแทนดวย 4+
37
บทที่ 6
บทสรุปและขอเสนอแนะ
6.1 ผลของการทดสอบโปรแกรม
ในสวนการนับจํานวนเม็ดเลือดแดงโดย Image segmentation นั้นจากการทดลองพบวาโปรแกรม
นับจํานวนเซลลไดถูกตอง แตในสวนการจดจําและแยกแยะเม็ดเลือดแดงโดยใชโครงขายประสาทเทียมนั้น
จากการที่ไดทาํ การทดลองเก็บสถิติของผลที่โครงขายประสาทเทียมจดจําและแยกแยะไดนั้นพบวายังมี
ความผิดพลาดดังแสดงไดดังนี้
รายละเอียด ทุกการทดลองใชไฟลภาพเดียวกัน ซึ่งแสดงไวในรูปที่ 6.1 สวนใหญจะเปนเม็ดเลือด
แดงที่ผิดปกติทางขนาดแบบ Ovalocyte (ทรงรี) รองลงมาเปน Normal cell (ทรงกลม) เซลลที่ติดกันบาง
และเศษเซลล ซึ่งจะพบนอยมาก ในการ Train จะใชจํานวนรอบ 20000 รอบเทากันทุกการทดลอง ขอมูลที่
นํามาฝกเปนเพียงตัวอยางบางเซลลจากทั้งหมด 173 เซลลภายในภาพ
การทดลองที่ 1
- กําหนดคาชนิดของเม็ดเลือดเพียง 2 ชนิดคือ Normal และ Ovalocyte และเก็บขอมูลเพียง 4
เซลล เพื่อแยกทรงกลมกับทรงรี
- ใช Feature 5 คาประกอบดวย จํานวน Zero crossing ของ Curvature ของเซลล, Number of
points, Minimum and maximum distance from center to edge และ Cell area
- จํานวนโหนดใน Layer 2 เปน 30
39
ผลการทดลอง
- โครงขายประสาทเทียมสามารถแยกแยะประเภทเม็ดเลือดแตละเม็ดไดถูกตองเมื่อเปรียบเทียบ
กับคําตอบจริงที่เราไดกาํ หนดไวแลว พบวาถูกตอง 130 เซลลในจํานวนทัง้ หมด 173 เซลล คิดเปน 75.1
เปอรเซ็นต สวนที่โครงขายประสาทเทียมจดจําผิดพลาดมีประมาณ 24.9 เปอรเซ็นต
- จํานวนเปอรเซ็นตหลังจากการฝกที่โครงขายประสาทเทียมสามารถทําการแยกแยะประเภทไดคิด
เปน Normal cell 35 เปอรเซ็นต Ovalocyte 56 เปอรเซ็นต สวนอีก 9 เปอรเซ็นตทเี่ หลือเปนประเภท Not
assign เมื่อคํานวณจากเซลลทั้งหมด 173 เซลลโดยไมสนใจวาโครงขายประสาทเทียมจะแยกแยะถูกตอง
หรือไม
- จํานวนเปอรเซ็นตเมื่อคิดเฉพาะที่โครงขายประสาทเทียมแยกแยะไดถูกตองพบวามี Normal cell
22 เปอรเซ็นต Ovalocyte 49.1 เปอรเซ็นต และ 4 เปอรเซ็นตเปนประเภท Not assign เมื่อรวมผลแลว
พบวาโครงขายประสาทเทียมแยกแยะไดถกู ตองตามประเภทของเม็ดเลือดแดงประมาณ 75 เปอรเซ็นต
การทดลองที่ 2
- กําหนดใหชนิดเม็ดเลือดมี 4 ชนิด เก็บขอมูลในการฝกมากขึ้นไดแก Normal 28 เซลล,
Ovalocyte 42 เซลล, Schistocyte 6 เซลลและ Other 6 เซลล
- ใช Feature 5 คาประกอบดวย จํานวน Zero crossing ของ Curvature ของเซลล, Number of
points, Minimum and maximum distance from center to edge และ Cell area
- จํานวนโหนดใน Layer 2 เปน 30
ผลการทดลอง
- โครงขายประสาทเทียมสามารถแยกแยะประเภทเม็ดเลือดแตละเม็ดไดถูกตองเมื่อเปรียบเทียบ
กับคาจริงที่เราไดกําหนดไวแลว พบวาถูกตอง 139 เซลลในจํานวนทั้งหมด 173 เซลล คิดเปน 80.3
เปอรเซ็นต
- จํานวนเปอรเซ็นตหลังจากการฝกทีโ่ ครงขายประสาทเทียมสามารถทําการแยกแยะประเภทได
คิดเปน Normal Cell 24 เปอรเซ็นต Ovalocyte 51 เปอรเซ็นต Schistocyte 5 เปอรเซ็นต Other 3
เปอรเซ็นต สวน 17 เปอรเซ็นตที่เหลือเปนประเภท Not assign เมื่อคํานวณจากเซลลทั้งหมด 173 เซลล
โดยไมสนใจวาโครงขายประสาทเทียมจะแยกแยะถูกตองหรือไม
- จํานวนเปอรเซ็นตเมื่อคิดเฉพาะที่โครงขายประสาทเทียมแยกแยะไดถูกตองพบวามี Normal cell
15.5 เปอรเซ็นต Ovalocyte 60.1 เปอรเซ็นต Schistocyte 2.1 เปอรเซ็นต Other 1.2 เปอรเซ็นต และ Not
assign 1.5% เมื่อรวมผลแลวพบวาโครงขายประสาทเทียมแยกแยะไดถูกตองตามประเภทของเม็ดเลือด
แดง 80.40 เปอรเซ็นต
40
การทดลองที่ 3
- กําหนดชนิดของเม็ดเลือดเพียง 2 ชนิดคือ Normal และ Ovalocyte และเก็บขอมูลในการฝก
เพียง 4 เซลล เพื่อแยกทรงกลมกับทรงรี
- ใช Feature 5 คาไดแก จํานวน Zero crossing ของ Curvature ของเซลล, Number of points,
Minimum and maximum distance from center to edge และ Cell area
- เพิ่มจํานวนโหนดใน Layer 2 เปน 40
ผลการทดลอง
- โครงขายประสาทเทียมสามารถแยกแยะประเภทเม็ดเลือดแตละเม็ดไดถูกตองเมื่อเปรียบเทียบ
กับคาจริงที่เราไดกําหนดไวแลว พบวาถูกตอง 108 เซลลในจํานวนทั้งหมด 173 เซลล คิดเปน 62.42
เปอรเซ็นต
- จํานวนเปอรเซ็นตหลังจากการฝกที่โครงขายประสาทเทียมสามารถทําการแยกแยะประเภทไดคิด
เปน Normal cell 16 เปอรเซ็นต Ovalocyte 56 เปอรเซ็นต สวนอีก 28 เปอรเซ็นตที่เหลือเปนประเภท Not
assign เมื่อคํานวณจากเซลลทั้งหมด 173 เซลลโดยไมสนใจวาโครงขายประสาทเทียมจะแยกแยะถูกตอง
หรือไม
การทดลองที่ 4
- กําหนดชนิดเม็ดเลือดเพียง 2 ชนิดคือ Normal และ Ovalocyte และเก็บขอมูลในการฝกเพียง 4
เซลล เพื่อแยกทรงกลมกับทรงรี
- ใช Feature 5 คาไดแก จํานวน Zero crossing ของ Curvature ของเซลล, Number of points,
Minimum and maximum distance from center to edge และ Cell area
- ลดจํานวนโหนดใน Layer 2 เปน 25
ผลการทดลอง
- โครงขายประสาทเทียมสามารถแยกแยะประเภทเม็ดเลือดแตละเม็ดไดถูกตองเมื่อเปรียบเทียบ
กับคาจริงที่เราไดกําหนดไวแลว พบวาถูกตอง 113 เซลลในจํานวนทั้งหมด 173 เซลล คิดเปน 65.31
เปอรเซ็นต
- จํานวนเปอรเซ็นตหลังจากการฝกที่โครงขายประสาทเทียมสามารถทําการแยกแยะประเภทไดคิด
เปน Normal cell 20 เปอรเซ็นต Ovalocyte 66 เปอรเซ็นต สวนอีก 14 เปอรเซ็นตที่เหลือเปนประเภท Not
assign เมื่อคํานวณจากเซลลทั้งหมด 173 เซลลโดยไมสนใจวาโครงขายประสาทเทียมจะแยกแยะถูกตอง
หรือไม
41
การทดลองที่ 5
- กําหนดชนิดของเม็ดเลือดเพียง 2 ชนิดคือ Normal และ Ovalocyte และเก็บขอมูลในการฝก
เพียง 4 เซลล เพื่อแยกทรงกลมกับทรงรี
-ใช Feature เปน 6 คา ที่เพิม่ เขามาคือ รัศมีเฉลี่ย
ผลการทดลอง
- โครงขายประสาทเทียมสามารถแยกแยะประเภทเม็ดเลือดแตละเม็ดไดถูกตองเมื่อเปรียบเทียบ
กับคาจริงที่เราไดกําหนดไวแลว พบวาถูกตอง 111 เซลลในจํานวนทั้งหมด 173 เซลล คิดเปน 64.16
เปอรเซ็นต
- จํานวนเปอรเซ็นตหลังจากการฝกที่โครงขายประสาทเทียมสามารถทําการแยกแยะประเภทไดคิด
เปน Normal cell 31 เปอรเซ็นต Ovalocyte 40 เปอรเซ็นต สวนอีก 29 เปอรเซ็นตที่เหลือเปนประเภท Not
assign เมื่อคํานวณจากเซลลทั้งหมด 173 เซลลโดยไมสนใจวาโครงขายประสาทเทียมจะแยกแยะถูกตอง
หรือไม
ตารางที่ 3 เปรียบเทียบการนับจํานวนและแยกแยะประเภท
Ovalocyte Normal Schistocyte Other Not
เงื่อนไข
% % % % Assign
กําหนดชนิดของเม็ดเลือด 2 ชนิด(แยก
กลมและรี) เก็บขอมูลในการฝกเพียง 4 49.1 22 - - 4
เซลล
กําหนดชนิดของเม็ดเลือด 4 ชนิดคือ
Ovalocyte, Normal, Schistocyte, 60.1 15.5 2.1 1.2 1.5
Other เก็บขอมูลในการฝกทัง้ หมด 82
เซลล ไดแก 42, 28, 6, 6 เซลลตามลําดับ
ผูเชี่ยวชาญ 72 22 2 1 3
6.2 ปญหาและอุปสรรค
1. ในการทดลองวิธีการ Segmentation กับภาพเม็ดเลือดแดงและการจดจําและแยกแยะเม็ด
เลือดแดงโดยใชโครงขายประสาทเทียมตองทดลองใชหลายวิธีกวาจะไดผลในระดับที่นา พอใจ
และในขั้นแรกของการทดลองจะใชโปรแกรม Matlab กอน หลังจากนั้นจึงเขียนเปน Code
ภาษา C++
2. การจดจําและแยกแยะเม็ดเลือดแดงโดยใชโครงขายประสาทเทียมทําไดคอนขางยาก
เนื่องจากเม็ดเลือดแดงบางประเภทมีลักษณะที่ไมตายตัวแนนอน ถึงแมวาจะเปนประเภท
เดียวกันก็ตาม ทําใหตองใชเวลาศึกษาหาลักษณะเดนทีเ่ หมาะสมและครอบคลุมลักษณะของ
เม็ดเลือดทุกๆเซลล คอนขางมาก ไมสามารถทําไดทันในระยะเวลาของวิชาโครงการใน 1 ป
2. โปรแกรมนี้ถือวาเปนงานวิจยั ในระดับหนึ่งที่สามารถนําไปประยุกตใชในการศึกษาและวิจัย
ดานอื่นๆตอได
6.4 ขอสรุปและขอเสนอแนะ
โปรแกรมตรวจนับเม็ดเลือดแดงสามารถนับจํานวนเม็ดเลือดแดงโดยเปนจํานวนเม็ดเลือดแดงที่
ไดมาจากการถายภาพดวยกลอง CCD ที่ตอกับกลองจุลทรรศนหรือจากการเปดไฟล โดยอาศัยหลักการ
ของ Image segmentation ซึง่ ใหผลการนับที่แนนอน นอกจากนี้โปรแกรมยังสามารถจดจําและแยกแยะ
ประเภทของความผิดปกติของเม็ดเลือดแดง สามารถระบุรูปรางที่ผิดปกติไดในระดับหนึง่
จากรายงานสรุปผลการทดสอบโปรแกรมในสวนการฝกของโครงขายประสาทเทียมที่ไดกลาวไว
ขางตน พบวา โครงขายประสาทเทียมที่สรางขึ้นแบบ 3 Layer นี้ เมื่อมี Input เปนคา Features 5 คา จะ
ใหผลการแยกแยะเซลลทถี่ ูกตองมากวาใช Input แบบ 6 คาและเมื่อกําหนดหรือเลือกประเภท(Type) เซลล
เม็ดเลือดแดงเปนตนแบบการ Train จํานวนมากเทาไหร ยิ่งใหผลการแยกประเภทถูกตองมากยิ่งขึน้ ในการ
ทดสอบนี้ใชจาํ นวน Node ใน Layer 2 เปน 30 และพบวาเมื่อลดจํานวนโหนดหรือเพิ่มโหนดใหมากกวา
30 ก็ใหผลถูกตองไมเทากับ 30 โหนด
ในการรายงานผลบน Window dialog เปนจํานวนเปอรเซ็นตที่โปรแกรมนับไดนนั้ โดยที่ โครงขาย
ประสาทเทียม อาจจะมีการตรวจพบรูปรางตามประเภทถูกตองหรือไมถูกตองบาง แตจะรายงานจํานวน
เซลลเม็ดเลือดแดงทั้งภาพ ซึ่งสรุปแลววาโปรแกรมจะแยกแยะเม็ดเลือดแดงตามรูปรางไดถูกตองประมาณ
74.6 เปอรเซ็นต สวนขอบกพรองของการรายงานผล คือ แมวาจะเปนไฟลภาพเดียวกัน เมื่อใช Features
หรือ เซลลตนแบบที่ไดเลือกเก็บตางกันจะใหผลลัพธที่แตกตางกันในแตละครั้ง สวนจํานวนรอบที่ใช Train
ก็ใหผลลัพธตางกันเชนกัน เราสามารถทําการฝกไดเรื่อยๆจน Error ต่ําที่สุดและคาเปอรเซ็นตความผิดปกติ
ก็เปลี่ยนแปลงไปดวย ซึง่ ในขณะนี้ยังไมมกี ารตรวจสอบกับทางผูเชีย่ วชาญวาควร Train ระดับไหน หรือวา
Features ใดที่เหมาะที่สุดถึงจะใหผลทีถ่ กู ตองได
โปรแกรมตรวจนับเม็ดเลือดแดงที่พฒ ั นามาจนถึงขั้นนี้ ถือไดวาเปนงานวิจยั อยางหนึ่ง ผูที่สนใจ
ศึกษาในเรื่องของการจดจําและแยกแยะเซลลหรือวัตถุอื่นๆที่อาศัยหลักการของ โครงขายประสาทเทียม
สามารถวิเคราะหผลการทดลองและนําเอาหลักการไปเปนแนวทางพัฒนา Application ตางๆตอได
ผูพัฒนาจึงมีขอ เสนอแนะวาเวลาในการพัฒนาโปแกรมควรมากขึ้นเพือ่ ที่จะสามารถพัฒนาโปรแกรมให
ถูกตองสมบูรณและนําไปใชงานจริงได นอกจากนี้สําหรับการวิจยั ในสวนของโครงขายประสาทเทียมที่จะ
ใชแยกแยะและจดจําเซลลเม็ดเลือดแดงเปนเรื่องที่คอนขางยากควรมีเวลาในการพัฒนาและศึกษาทีน่ าน
พอสมควรถึงจะใหผลสรุปที่ถูกตองได
44
ภาคผนวก
คูมือการติดตั้ง
ในการใชโปรแกรมผูใชจะตองทําการติดตั้งโปรแกรมโดยใสแผน CD ติดตั้งโปรแกรมลงไปใน
CD-ROM เมื่อใสแผน CD แลว ใหปฏิบัตติ ามขั้นตอนดังนี้
1. ดับเบิ้ลคลิกไอคอน Setup.exe จะปรากฏหนาตางขึ้นดังรูป
3. เลือก I Agree แลวคลิก Next > ก็จะปรากฏหนาตาง Select installation folder ขึ้นดังรูป
บรรณานุกรม