การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม...

12
Introduction to Digital Image Processing and Machine Vision Programming Project and Source code: Chapter5_ Morphological Image Processing กฎของการใชเอกสารและโคดโปรแกรมเผยแพร คือหามทําซ้ําเพื่อการคาใดๆทั้งสิ้น ดวยจิตคารวะ จากผูเรียบเรียง

Upload: know2pro

Post on 29-Jul-2015

338 views

Category:

Documents


2 download

DESCRIPTION

การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

TRANSCRIPT

Page 1: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

 Introduction to Digital Image Processing and Machine Vision Programming     Project and Source code: Chapter5_ Morphological Image Processing   กฎของการใชเอกสารและโคดโปรแกรมเผยแพร คือหามทําซ้ําเพ่ือการคาใดๆทั้งส้ิน ดวยจิตคารวะ จากผูเรียบเรียง 

    

Page 2: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  55 Chapter 5 Morphological Image Processing 

 

 

  Morphological Image Processing เปนการประมวลผลภาพโดยการเปลี่ยนแปลงลักษณะรูปรางหรือ โครงสรางของภาพ โดยใชโอเปอรเรชั่นพื้นฐานไดแก การทํา Dilation และ Erosion โดยกระบวนการของการทํา Dilation คือการขยายพิกเซลที่สวางโดยมีสัดสวนเทากันทั่วทั้งภาพ (Uniform) และการทํา Erosion คือการลดขนาดพิกเซลโดยมีสัดสวนเทากันทั่วทั้งภาพดวยเชนกัน นอกจากโอเปอรเรชั่นพื้นฐานดังที่ไดกลาวมาขางตนแลวยังประกอบดวยโอเปอรเรชั่นอื่นๆ ซ่ึงไดแกการทํา Opening และ Closing เปนตน การประมวลผลภาพในเรื่องของ Morphological จะใชโปรเจ็ค ImageProcessing ซ่ึงในบทที่ผานมา ไดเตรียมความสามารถพื้นฐานตางๆของโปรแกรมแลว ดังนั้นสามารถแกไขหรือเพิ่มโคดโปรแกรมในสวนของการทํา Dilation และ Erosion ลงในคลาส CMyAlgorithm และทําการเพิ่มรายละเอียดของเมนู ใหมีความสามารถเรียกใชคําสั่งการประมวลผลภาพในสวนของ Morphological โดยมีขั้นตอนดังนี้ ขั้นตอนที่ 1 การเพิ่มฟงกชันลงในคลาส CMyAlgorithm ภาพที่ 1 การเพิ่มฟงกชันลงในคลาส CMyAlgorithm การประมวลผลภาพดิจิทัลดวยโปรแกรม Poolsak Koseeyaporn,Ph.D , Mr.Nattaphol  Jasungnuen

[email protected]  (089‐474‐942‐6) King Mongkut’s University of Technology North Bangkok 1.1 เปดหนาตาง Class View แสดงรายละเอียดคลาสทั้งหมดของโปรเจ็ค 1.2 เลือกคลาส CMyAlgorithm คลิ๊กขวา เลือกการ Add Function จะปรากฏไดอะล็อกดังภาพที่ 2 1.3 เพิ่มฟงกชันตางๆดังตารางที่ 1 ลงในไดอะล็อกดังภาพที่ 2 ตารางที่1 ฟงกชันตางๆ Return type: Function name: Access: Parameter void Dilation public - void Erosion public - void ExchangeImg public CMyAlgorithm & img 1.4 การเพิ่มฟงกชันที่มีพาริเตอรเชน ExchangeImg(CMyAlgorithm & img) ใหพิมพชนิดของ Parameter type และชื่อตัวแปร Parameter name ดังภาพที่ 2 1.5 เลือก Finish เมื่อเสร็จสิ้นขั้นตอน

Page 3: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  56 Chapter 5 Morphological Image Processing  ภาพที่ 2 ไดอะล็อกสําหรับเพิ่มฟงกชัน ภาพที่ 3 แสดงรายละเอียดคลาส เมื่อทําการเพิ่มฟงกชันเรียบรอยแลว ในสวนของ Tap Class View จะแสดงรายละเอียดของฟงกชันที่เพิ่มเขามาดังภาพที่ 3 ผูเขียนโปรแกรมสามารถใชเมาทคล๊ิกที่ช่ือฟงกชันตางๆใน Class View เพื่อแกไขหรือเพิ่มโคดโปรแกรมภายในฟงกชันได ขั้นตอนที่ 2 การเพิ่มรายละเอียดของเมนู (Menu) ภาพที่ 4 แสดง Resource View ภาพที่ 5 การ Insert New เมนู การเพิ่มเมนูเปนการสรางสวนติดตอกับผูใชงาน เพื่อใหผูใชงานสามารถเลือกใชเมนูการทํางานไดตามตองการ การเพิ่มเมนูมีขั้นตอนดังนี้ 2.1 เลือก Tap Resource View แสดงรายละเอียดเมนูดังภาพที่ 4 2.2 ดับเบิ้ลคล๊ิกที่ IDR_ImageProcessingTYPE จะปรากฏเมนูดังภาพที่ 5 2.3 คล๊ิกขวาบนเมนูบารเพิ่มรายละเอียดของเมนูทั้งหมดดังภาพที่ 6 คลิ๊กขวาบนเมนูบาร

Page 4: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  57 Chapter 5 Morphological Image Processing  ภาพที่ 6 แสดงรายละเอียดของเมนู ขั้นตอนที่ 3 การเชื่อมโยงเมสเสจใหกับเมนู (Menu) การกําหนดฟงกชันใหสามารถเรียกใชดวยเมนูตางๆที่เราสรางขึ้นนั้นจะเรียกวา แม็พเมสเสจ ในบทนี้จําเปนตองแม็พฟงกชันจํานวน 4 ฟงกชันดังตารางที่ 2 ตารางที่ 2 กําหนด Member function Menu Message map Member function Dilation COMMAND OnMorphologicalDilation Erosion COMMAND OnMorphologicalErosion Opening COMMAND OnMorphologicalOpening Closing COMMAND OnMorphologicalClosing สําหรับการแม็พเมสเสจ มีขั้นตอนดังนี้ คล๊ิกขวาที่เมนูยอยจะปรากฏ pop-up เมนู ใหเลือกรายการ Add Event Handler จะปรากฏไดอะล็อก Add Event Handler Wizard ดังภาพที่ 8 ชอง Messages type เลือกที่เมสเสจ COMMAND ชอง Class list เลือกคลาส CImageProcessingView ฟงกชัน Function handler name: ปรกติวิซารดจะตั้งชื่อฟงกชันใหอัตโนมัติ คล๊ิกปุม Add and Event เพื่อเพิ่มฟงกชัน คลาสวิซารดจะทําการเพิ่มฟงกชันใหอัตโนมัติ ใหทําการเพิ่มฟงกชันดังตารางที่ 2 ทั้งหมด รายเอียดเมนูดังนี ้1. Dilation แสดงการขยายพิกเซล 2. Erosion แสดงการลดขนาดพิกเซล 3. Opening แสดงการเปดพิกเซลของภาพ 4. Closing แสดงการปดพิกเซลของภาพ ภาพที่ 7 Pop-up รายการ Add Event Handler  ภาพที่ 8 แสดง Event Handler Wizard 

Page 5: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  58 Chapter 5 Morphological Image Processing  เมื่อทําการแมพ็เมสเสจใหกบัเมนูทั้งหมดแลว ผูใชงานก็จะสามารถเรยีกใชฟงกชันตางๆผานทางเมนูได ในขั้นตอนตอไปนี้จะเพิ่มโคดโปรแกรมลงในฟงกชันตางๆเพื่อใหทํางานตามที่ตองการ ขั้นตอนที่ 4 การเพิ่มโคดโปรแกรมลงในคลาส CMyAlgorithm ในการเพิ่มโคดโปรแกรมลงในฟงกชันตางๆของคลาส CMyAlgorithm ประกอบดวยฟงกชัน Dilation และ Erosion ดังนี้ • การขยายพิกเซล CMyAlgorithm::Dilation(void) ฟงกชันนี้จะใช Structure Element ที่มีขนาด Kernel 3x3 ใชสําหรับกระทําตอพิกเซลทั้งหมดภายในภาพ เร่ิมตนดวยการกําหนดคาระดับต่ําสุดใหกับคาแมสีทุกสี ดังนั้นตัวแปร (redM= 0, greenM= 0, blue= 0) void CMyAlgorithm::Dilation(void) {   if (IsIndexed())  return;      BYTE se[3][3]={  { 0, 1, 0},       

{ 1, 1, 1},       { 0, 1, 0}    };   CMyAlgorithm image;   VERIFY(image.CreateEx(GetWidth(),GetHeight(), GetBPP(),BI_RGB));   BYTE redM, greenM, blueM;   int maxHigh = GetHeight()‐1; 

int maxWidth = GetWidth()‐1 ;   BYTE *p ;    BYTE *pDes;   int center = 1;   int nRedVal, nGreenVal, nBlueVal;    for (int y =1; y < maxHigh; y++)   {     for (int x =1; x < maxWidth; x++)     {          redM = greenM = blueM = 0;       

pDes = (BYTE*)image.GetPixelAddress(x,y);       for(int j=0;j<3;j++)       {               for(int i = 0; i <3; i++)              {         p = (BYTE*)GetPixelAddress(x+i‐center,y+j‐center);         nRedVal = (BYTE)p[2]+se[j][i];           nGreenVal =(BYTE)p[1]+se[j][i];         nBlueVal = (BYTE)p[0]+se[j][i];          if (nRedVal > 255)  nRedVal = 255;           if (nRedVal < 0)  nRedVal = 0;         if (nGreenVal > 255)  nGreenVal = 255;         if (nGreenVal < 0)  nGreenVal = 0;         if (nBlueVal > 255)   nBlueVal = 255;         if (nBlueVal < 0)  nBlueVal = 0;          redM = (BYTE)max(redM,nRedVal);          greenM = (BYTE)max(greenM,nGreenVal);         blueM = (BYTE)max(blueM,nBlueVal);               }       }     *pDes++ =  blueM;  *pDes++ = greenM; *pDes = redM;     }   }   ExchangeImg(image); } 

สมการ Dilation แสดงดังนี้ { }, ,max ( , ) ( , )i j i jA H A x i y j H i j⊕ = − − + เมื่อ คา A เปนคา Pixel ณ ตาํแหนง x,y ใดๆ คา H เปนคา Structure Element ขนาด i*j คา ,A R H R∈ ∈ เปนจํานวนจริง Structure Element (Kernel 3x3)

Page 6: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  59 Chapter 5 Morphological Image Processing ตอไปจะทําการคํานวณหาคาพิกเซลบริเวณรอบๆพิกเซลนั้น โดยเอาคาของพิกเซลบวกดวยคา Structure Element แลวเก็บคาที่คํานวณไดลงในตัวแปร nRedVal, nGreenVal, nBlueVal จากนั้นจึงหาคํานวณคาพิกเซลสูงสุดโดยใชแมโคร max แลวเก็บไวในตัวแปร redM, greenM, blueM เพื่อนําคาพิกเซลที่ไดนี้มาใชในการแสดงภาพใหม • การลดพิกเซล CMyAlgorithm::Erosion(void) ฟงกชันนี้จะใช Structure Element ที่มีขนาด Kernel 3x3 ใชสําหรับกระทําตอพิกเซลทั้งหมดภายในภาพ เร่ิมตนดวยการกําหนดคาระดับสูงสุดใหกับคาแมสีทุกสี ดังนั้นตัวแปร (redM= 255, greenM= 255, blue= 255) ตอไปจะทําการคํานวณหาคาพิกเซลบริเวณรอบๆพิกเซลนั้น โดยเอาคาของพิกเซลลบดวยคา Structure Element แลวเก็บคาที่คํานวณไดลงในตัวแปร nRedVal, nGreenVal, nBlueVal จากนั้นทําการvoid CMyAlgorithm::Erosion(void) {   if (IsIndexed()) return;   BYTE se[3][3]={ { 0, 1, 0},     { 1, 1, 1},        { 0, 1, 0}   };   CMyAlgorithm image;   VERIFY(image.CreateEx(GetWidth(),GetHeight(), GetBPP(),BI_RGB));   BYTE redM, greenM, blueM;   int maxHigh = GetHeight() ‐1;   int maxWidth = GetWidth() ‐1 ;   BYTE *p ; BYTE *pDes;   int center = 1;   int nRedVal, nGreenVal, nBlueVal;    for (int y =1; y < maxHigh; y++)   {     for (int x =1; x < maxWidth; x++)     {          redM =greenM = blueM =255;       pDes = (BYTE*)image.GetPixelAddress(x,y);       for(int j=0;j<3;j++)       {       for(int i = 0; i <3; i++)       {         p = (BYTE*)GetPixelAddress(x+i‐center,y+j‐center);         nRedVal = (BYTE)p[2]‐se[j][i];         nGreenVal =(BYTE)p[1]‐se[j][i];         nBlueVal = (BYTE)p[0]‐se[j][i];          if (nRedVal > 255) nRedVal = 255;           if (nRedVal < 0) nRedVal = 0;         if (nGreenVal > 255) nGreenVal = 255;         if (nGreenVal < 0) nGreenVal = 0;         if (nBlueVal > 255) nBlueVal = 255;         if (nBlueVal < 0) nBlueVal = 0;          redM = (BYTE)min(redM,nRedVal);           greenM = (BYTE)min(greenM,nGreenVal);         blueM = (BYTE)min(blueM,nBlueVal);       }       }       *pDes++ =  blueM; *pDes++ = greenM; *pDes = redM;     }   }   ExchangeImg(image); } 

สมการ Erosion แสดงดังนี้ { }, ,min ( , ) ( , )i j i jA H A x i y j H i jΘ = − − − เมื่อ คา A เปนคา Pixel ณ ตาํแหนง x,y ใดๆ คา H เปนคา Structure Element ขนาด i*j คา ,A R H R∈ ∈ เปนจํานวนจริง Structure Element (Kernel 3x3)

Page 7: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  60 Chapter 5 Morphological Image Processing คํานวณหาคาพิกเซลต่ําสุดโดยใชแมโคร min แลวเก็บไวในตัวแปร redM, greenM, blueM เพื่อนําคาพิกเซลนี้มาใชในการแสดงผลภาพใหม ขั้นตอนที่ 5 การเพิ่มโคดโปรแกรมลงในคลาส CImageProcessingView ในสวนของคลาสวิวทําหนาที่แสดงขอมูลภาพบนจอภาพบนหนาจอคอมพิวเตอร โดยแสดงภาพเทากับภาพตนฉบับ ฟงกชันหลักในการแสดงขอมูลภาพจะใชฟงกชัน GetDocument เพื่ออานขอมูลจากคลาสด็อกคิวเมนต จากนั้นคลาสวิวก็จะทําการวาดภาพออกทางจอภาพดวยฟงกชัน OnDraw นอกจากนั้นคลาสวิวจะทําหนาที่สงขอมูลไปยังคลาส CMyAlgorithm เพื่อทําการประมวลผล Dilation, Erosion, Opening และ Closing โดยมีการเพิ่มขอมูลลงในฟงกชันตางๆที่ไดทําการแม็พเมสเสจในขั้นตอนที่ 3 เพิ่มโคดโปรแกรมลงในฟงกชันตางๆดังนี้ • เพิ่มโคด CImageProcessingView::OnMorphologicalDilation()ดังนี ้ ฟงกชันการทํา Dilation ของภาพ เร่ิมดวยการใชฟงกชัน GetDocument เพื่อเก็บคาพอยนเตอรของคลาสด็อกคิวเมนต มาเก็บไวในตัวพอยนเตอร *pDoc จะใชตัวแปรนี้ช้ีไปยังฟงกชัน GetImage เพื่ออานขอมูลภาพเขามาเก็บไวใน *pImage จากนั้นทําการตรวจสอบคาของตัวแปรแบบพอยนเตอรตองไมมีคาเปนศูนย แสดงวาขณะนี้ตัวแปร *pImage มีขอมูลในหนวยความจํา แลวใชพอยนเตอรช้ีไปยังฟงกชัน Dilationในคลาส CMyAlgorithm เพื่อทําการประมวลผลภาพ เมื่อคํานวณคาเสร็จสิ้น ใหทําการเรียกฟงกชัน UpdateAllViews เพื่อใหวิวแสดงคาปจจุบันออกทางจอภาพ เราจึงมองเห็นภาพที่ผานกระบวนการ Dilationในทํานองเดียวกันฟงกชันของการทํา Erosion ก็มีกระบวนการทํางานเหมือนกันทุกประการ ตางกันก็เพียงการสงคาพอยเตอรใหคลาส CMyAlgorithm เพื่อทําการประมวลผลภาพในฟงกชันตางๆที่ตองการ ในการทําภาพแบบ Opening ก็เชนเดียวกันสามารถทําไดโดยการเรียกฟงกชันการ Erosion() ตามดวย Dilation() และในการทําภาพแบบ Closing ทําไดโดยการเรียกฟงกชัน Dilation() แลวตามดวย Erosion() สามารถเพิ่มโคดโปรแกรมไดดังนี้ void CImageProcessingView::OnMorphologicalDilation() {   CImageProcessingDoc* pDoc = GetDocument();   ASSERT_VALID(pDoc);    CMyAlgorithm* pImage = pDoc‐>GetImage();   if(pImage == NULL) return;      pImage‐>Dilation();   pDoc‐>UpdateAllViews(NULL); } 

Page 8: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  61 Chapter 5 Morphological Image Processing • เพิ่มโคด CImageProcessingView::OnMorphologicalErosion() ดังนี ้ • เพิ่มโคด CImageProcessingView::OnMorphologicalOpening() ดังนี้ • เพิ่มโคด CImageProcessingView::OnMorphologicalClosing() ดังนี ้ เมื่อทําการแกไขโคดโปรแกรมเสร็จทุกขั้นตอน ใหเลือกบันทึกทั้งหมด(Save all) จากนั้นทําการคอมไฟลโปรแกรมดวยเมน ูBuild ImageProcessing ถาไมมีขอผิดพลาด ก็จะสามารถรัน(Run) โปรแกรมได void CImageProcessingView::OnMorphologicalErosion() {   CImageProcessingDoc* pDoc = GetDocument();   ASSERT_VALID(pDoc);    CMyAlgorithm* pImage = pDoc‐>GetImage();   if(pImage == NULL) return;      pImage‐>Erosion();   pDoc‐>UpdateAllViews(NULL); } 

void CImageProcessingView::OnMorphologicalOpening() {   CImageProcessingDoc* pDoc = GetDocument();   ASSERT_VALID(pDoc);    CMyAlgorithm* pImage = pDoc‐>GetImage();   if(pImage == NULL) return;      pImage‐>Erosion();   pImage‐>Dilation();    pDoc‐>UpdateAllViews(NULL); } 

void CImageProcessingView::OnMorphologicalClosing() {   CImageProcessingDoc* pDoc = GetDocument();   ASSERT_VALID(pDoc);    CMyAlgorithm* pImage = pDoc‐>GetImage();   if(pImage == NULL) return;      pImage‐>Dilation();   pImage‐>Erosion();    pDoc‐>UpdateAllViews(NULL); } 

Page 9: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  62 Chapter 5 Morphological Image Processing ขั้นตอนที่ 6 ทดสอบผลการทํางานของโปรแกรม การทํางานของโปรแกรมเริ่มตนดวยการเลือกไฟลภาพบิตแมพที่ตองการเปดเขามาในโปรแกรม ImageProcessing ในบทนี้ทดสอบดวยภาพบิตแมพ ซ่ึงขอมูลในแตละภาพมีคุณสมบัติเหมือนกันทุกประการ เพื่อที่จะแสดงใหเห็นถึงการเปลี่ยนแปลงของภาพเมื่อผานกระบวนการประมวลผลภาพดวยอัลกอริทึม Dilation, Erosion, Opening, และ Closing ที่สรางขึ้น มีขั้นตอนการทดสอบดังนี้ • เลือกรัน(Run) โปรแกรม จะแสดงหนาตางของโปรแกรม ImageProcessing ใหทําการเปดไฟลขอมูลภาพ จะปรากฏไดอะล็อกสําหรับเปดไฟลภาพ เลือกภาพที่ตองการ ดังภาพที่ 9 ภาพที่ 9 หนาตางโปรแกรม Image Processing • ทําการเปดภาพตนฉบับจํานวน 3 ภาพ เลือกเมนู Morphological ใหเลือกทําการ Dilation และ Erosion จะไดผลการทดลองดังภาพที ่10 และภาพที ่11 ภาพที ่10 ผลการทํา Dilation และ Erosion การทํา Dilation การทํา Erosion

Page 10: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  63 Chapter 5 Morphological Image Processing  ภาพที ่11 ผลการทํา Dilation และ Erosion • ทําการเปดภาพตนฉบับใหมจํานวน 3 ภาพ เลือกเมนู Morphological ใหเลือกทําการ Opening และ Closing จะไดผลการทดลองดังภาพที ่12 ภาพที ่12 ภาพการทํา Opening และ Closing

Page 11: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  64 Chapter 5 Morphological Image Processing สรุป การสรางโปรแกรมในบทนี้ทุกทานไดศึกษาถึงกระบวนการประมวลผลภาพเบื้องตนดวยโปรแกรมMicrosoft Visual C++.NET 2003 แสดงถึงรายละเอียดในการสรางอัลกอริทึม ในเรื่อง Morphological Image Processing ซ่ึงจะประกอบดวยการขยายพิกเซลของภาพ (Dilation) การลดขนาดพิกเซล (Erosion) การเปดพื้นที่วางภายในภาพ (Opening) และการปดพื้นที่วางภายในภาพ (Closing) ซ่ึงจะมีประโยชนมากในการปรับปรุงขอมูลภาพที่มีรายละเอียดไมชัดเจนเชน การทําเสนลายนิ้วมือใหชัดเจน กอนนําขอมูลลายนิ้วมือบันทึกเพื่อตรวจสอบวาเปนลายนิ้วมือของใคร เปนตน

Page 12: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP5 Morphological Image Processing

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  65 Chapter 5 Morphological Image Processing  หนังสือ 1. หนังสือ Digital Image Processing using MATLAB ผูแตง Rafael C.Gonzalez, Richard E. Woods, Steven L. Eddins ISBN 0-13-008519-7 (อางอิงการใช Kernal แบบตางๆ) 2. หนังสือ คูมือการเขียนโปรแกรมวินโดวดวย Visual C++.NET ผูแตง ยทุธนา ลีลาศวัฒนกุล (ใหเครดิตคนเขยีนตําราเลมนี้ครับ) (อางอิงตวัอยาง Source Code และการใชคลาส CImage) 3. หนังสือ Professional MFC with Visual C++ 5 ผูแตง Mike Blaszczak ISBN 1-861000-14-6 4. หนังสือ Visual C++ and MFC Programming ผูแตง นิรุธ อํานวยศลิป ISBN 974-93262-6-1 5. หนังสือ The Image Processing Handbook,3rd edition ,CRC Press, Boca Raton,FL อินเทอเน็ต 1. www.codeproject.com ตัวอยางโปรแกรม Digital Image และ MFC 2. www.codeguru.com ตัวอยางโปรแกรม Digital Image และ MFC 3. ตัวอยาง Source Code และการใชคลาส cImage จากตัวอยางโปรแกรม cxImage ที่มา http://sourceforge.net/projects/cximage 4. http://www.stanford.edu/class/ee368/handouts.html ขอมูลทั่วไป 5. http://klimt.iwr.uni-heidelberg.de/mip/people/fhamprecht/fhamprecht.php3 ขอมูลทั่วไป 6. http://www.fesb.hr/khoros/dipcourse/dip/ ขอมูลทั่วไป 7. ขอมูล OpenCV Library - http://www.intel.com/technology/computing/opencv/ - http://opencvlibrary.sourceforge.net/ - OpenCV Reference manual 8. อางอิงการใชงาน Port I/O Driver สําหรับพอรตขนาน - http://www.driverlinx.com/DownLoad/DlPortIO.htm ทางผูจัดทําขอขอบพระคุณทุกทานที่กลาวถึงในขอมูลอางอิง ที่ไดจัดทําขอมูลที่มีความรูที่ดีและเปนประโยชนตอการเรียนรู ขอผลบุญทางความรูทั้งหมดอุทิศแดพอแม ครูอาจารย และเจากรรมนายเวรของขาพเจา เทอญฯ