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

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

Upload: know2pro

Post on 29-Jul-2015

291 views

Category:

Documents


5 download

DESCRIPTION

การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

TRANSCRIPT

Page 1: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

 Introduction to Digital Image Processing and Machine Vision Programming  

 

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

   

   

Page 2: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  44 Chapter 4 Histogram and Histogram Equalization 

 

 

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

Department of Teacher Training in Electrical Engineering 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 HistogramEqualization public - 1.4 เลือก Finish เมื่อเสร็จสิ้นขั้นตอน ภาพที ่1 การเพิ่มฟงกชันลงในคลาส CMyAlgorithm

Page 3: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  45 Chapter 4 Histogram and Histogram Equalization  ภาพที่ 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++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  46 Chapter 4 Histogram and Histogram Equalization  ภาพที่ 6 แสดงรายละเอียดของเมนู ขั้นตอนที่ 3 การเชื่อมโยงเมสเสจใหกับเมนู (Menu) การกําหนดฟงกชันใหสามารถเรียกใชดวยเมนูตางๆที่เราสรางขึ้นนั้นจะเรียกวา แม็พเมสเสจ ในบทนี้จําเปนตองแม็พฟงกชันจํานวน 2 ฟงกชันดังตารางที่ 2 ตารางที่ 2 กําหนด Member function Menu Message map Member function Histogram Eqaulization COMMAND OnHistogramEqaulization() R-G-B Histograms COMMAND OnRGBHistogram () สําหรับการแม็พเมสเสจ มีขั้นตอนดังนี้ คล๊ิกขวาที่เมนูยอยจะปรากฏ pop-up เมนู ใหเลือกรายการ Add Event Handler จะปรากฏไดอะล็อก Add Event Handler Wizard ดังภาพที่ 8 ชอง Messages type เลือกที่เมสเสจ COMMAND ชอง Class list เลือกคลาส CImageProcessingView ฟงกชัน Function handler name: ปรกติวิซารดจะตั้งชื่อฟงกชันใหอัตโนมัติ คล๊ิกปุม Add and Event เพื่อเพิ่มฟงกชัน คลาสวิซารดจะทําการเพิ่มฟงกชันใหอัตโนมัติ ใหทําการเพิ่มฟงกชันดังตารางที่ 2 ทั้งหมด รายเอียดเมนูดังนี้ 1. Histogram Equalization แสดงภาพที่ผานการทํา Histogram Equalization 2. R-G-B Histogram แสดงกราฟฮิสโทแกรม แมสีตางๆของภาพ

Page 5: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  47 Chapter 4 Histogram and Histogram Equalization  ภาพที ่7 Pop-up รายการ Add Event Handler ภาพที ่8 แสดง Event Handler Wizard   เมื่อทําการแมพ็เมสเสจใหกบัเมนูทั้งหมดแลว ผูใชงานก็จะสามารถเรยีกใชฟงกชันตางๆที่ผานทางเมนูได ในขั้นตอนตอไปจะเพิ่มโคดโปรแกรมลงในฟงกชันตางๆเพื่อใหทํางานตามทีต่องการ  ขั้นตอนที่ 4 การเพิ่มโคดโปรแกรมลงในคลาส CMyAlgorithm ในการเพิ่มโคดโปรแกรมลงในฟงกชันตางๆของคลาส CMyAlgorithm ประกอบดวยฟงกชันการทํา Histogram Equalization เพียงฟงกชันเดียวเทานั้น โดยจะใชสมการคณิตศาสตรอยางงายชวยในการคํานวณ Histogram Equalization เพื่อทํากระจายระดับความสวางของภาพ ดังนี้ สมการ Histogram Equalization คือ

0;

kj

kj

nS

n==∑ 0,1, 2,3.... 1k L= − (1) เมื่อ kS คือ คาเอาตพุตของ Histogram Equalization n คือ จํานวนพิกเซลทั้งหมด jn คือ จํานวนพิกเซลที่ระดับความสวางตางๆ 0,1, 2,3.... 1j L= − L คือ ระดับความสวางสูงสุด  

Page 6: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  48 Chapter 4 Histogram and Histogram Equalization • ฟงกชันการทํา Histogram Equalization ดังนี้  

 

 

 

 

 

 

 

 

 

 

  void CMyAlgorithm::HistogramEqualization(void){   if (IsIndexed())  return; //ตรวจสอบชนิดขอมูลภาพ   CMyAlgorithm  image; //สรางออ็ปเจ็กตใหมจากคลาส CMyAlgorithm   int *pRed = new int [256];    int *pGreen = new int [256];   int *pBlue = new int [256]; 

memset( pBlue, 0, ( 256 ) * sizeof( int ) ); //เคลียรขอมูลในบัฟเฟอร   memset( pRed , 0, ( 256 ) * sizeof( int ) );   memset( pGreen, 0, ( 256 ) * sizeof( int ) );    int maxWidth = GetWidth(), maxHigh = GetHeight(); //เก็บคาขนาดภาพตนฉบับ   VERIFY(image.CreateEx(maxWidth,maxHigh, GetBPP(),BI_RGB));  

BYTE *pSrc;BYTE *pNew;  //สรางตัวแปรพอยนเตอรสําหรับอานขอมลูภาพ   for (int y=0; y <maxHigh ; y++)   {     for  (int x=0; x<maxWidth; x++)      {  //เก็บสถิติจํานวนความถี่ที่เกิดข้ึนซํ้าๆ ของแมสีแดง สีเขียว สีน้ําเงิน       pSrc = (BYTE*)GetPixelAddress( x,y );       pRed[pSrc[2]]++;       pGreen[pSrc[1]]++;       pBlue[pSrc[0]]++;     }   } 

int nPixels = maxWidth*maxHigh;    //คํานวณหาจํานวนพิกเซลทั้งหมดของภาพ int sR, sGr, sB; 

  sR = sGr = sB = 0;   float factor = (float)(255.0/nPixels);  //คํานวณหา factor   //สรางบัฟเฟอรเก็บคาสีตางๆ   int *sHRed = new int [256];  int *sHGreen = new int [256];  int *sHBlue = new int [256];   memset( sHBlue, 0, ( 256 ) * sizeof( int ) );   memset( sHRed , 0, ( 256 ) * sizeof( int ) );   memset( sHGreen, 0, ( 256 ) * sizeof( int ) );    for (int i = 0; i < 256; i++)   {     //เก็บคาผลรวมของฮิสโทแกรมในแตละระดบัลงในตัวแปร 

sR += pRed[i];     sGr += pGreen[i];     sB += pBlue[i]; //นําคาที่ไดคูณกับ factor แลวเก็บในบัฟเฟอรแมสีตางๆ     sHRed[i] =(int)((sR*factor)+0.5);     sHGreen[i] =(int)((sGr*factor)+0.5);     sHBlue[i] =(int)((sB*factor)+0.5);   }   for (int y=0; y <maxHigh ; y++)   {     for  (int x=0; x<maxWidth; x++)      {     //แปลงคาบฟัเฟอรในแตละแมสี ใหเปนขอมูลภาพใหม 

pSrc             =  (BYTE*)GetPixelAddress( x,y );       pNew          =  (BYTE*)image.GetPixelAddress(x,y);       *pNew++   =  (BYTE)sHBlue[pSrc[0]];       *pNew++   =  (BYTE)sHGreen[pSrc[1]];       *pNew        =  (BYTE)sHRed[pSrc[2]];     }   }   ExchangeImg(image); //แลกเปลี่ยนขอมูลภาพ   delete [] pRed ;  delete [] pGreen ;    delete [] pBlue;  //คืนคาหนวยความจําดวยโอเปอรเรเตอร new   delete [] sHRed;  delete [] sHGreen ;   delete [] sHBlue; } 

Page 7: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  49 Chapter 4 Histogram and Histogram Equalization  จากฟงกชันการทํา Histogram Equalization จะทําการตรวจสอบขอมูลภาพตนฉบับตองไมเปนภาพดิจิทัลชนิดอินเด็กซ (บีบอัดขอมูล) จากนั้นทําการคํานวณ Histogram Equalization จากสมการที่ 1 ดังนี้ คํานวณความถี่ที่เกิดขึ้นซ้ําๆ ณ ระดับความเขมพิกเซลที่มีคาตั้งแต 0-255 เชน ระดับความเขมที่ 255 จะมีการเกิดขึ้นซ้ําๆกันจํานวน 500 คร้ัง หมายถึงฮิสโทแกรมจะมีความถี่เทากับ 500 ณ ระดับความเขมพิกเซลที่ 255 คํานวณผลรวมการ Normalize ของฮิสโทแกรม โดยหาผลรวมของฮิสโทแกรมในแตละระดับความเขม เชนที่ระดับความเขมที่ 5 จะตองรวมคาฮิสโทแกรม ณ ระดับความเขมที่ 0,1,2.. และ 5 เขาดวยกัน แลวนําคาผลรวมฮิสโทแกรมในแตละระดับความเขม คูณกับคาพิกเซลสูงสุดคือ 255 แลวหารดวยจํานวนพิกเซลทั้งหมดของภาพ ในการเขียนโปรแกรมคํานวณฮิสโทแกรม เร่ิมตนดวยการสรางตัวแปรพอยนเตอรชนิดเก็บคาจํานวนเต็ม(int) คือ pRed, pGreen และ pBlue เพื่อเก็บจํานวณความถี่ที่เกิดขึ้นซ้ําๆ การใชตัวแปรพอยนเตอรจะตองทําการเคลียรคาบัฟเฟอรใหเปนศูนยดวยคําสั่ง memset กอนเสมอ แลวจึงคํานวณคาฮิสโทแกรมในแตละแมสีที่ไดเก็บในตัวแปรพอยนเตอร จากนั้นคํานวณผลรวมการทํา Normalize ของฮิสโทแกรม เก็บในตัวแปรใหมคือ sHRed, sHGreen, sHBlue เพื่อเก็บคาผลรวมการทํา Normalize ของสีแดง สีเขียว และสีน้ําเงิน ตามลําดับ ผลรวมฮิสโทแกรมในแตละระดับความเขมจะเก็บที่ตัวแปร sR, sGr, และ sB แลวนําผลรวมคูณกับคา factor แลวแปลงคาที่ไดเปนเอาตพุตของภาพใหม ขั้นตอนที่ 5 การเพิ่มโคดโปรแกรมลงในคลาส CImageProcessingView ในสวนของคลาสวิวทําหนาที่แสดงขอมูลภาพบนหนาจอคอมพิวเตอร โดยแสดงภาพที่ผานการประมวลผลภาพที่มีขนาดเทากับภาพตนฉบับ ฟงกชันหลักในการแสดงขอมูลภาพจะใชฟงกชัน GetDocument เพื่ออานขอมูลจากคลาสด็อกคิวเมนต จากนั้นคลาสวิวก็จะทําการวาดภาพออกทางจอภาพดวยฟงกชัน OnDraw นอกจากนั้นคลาสวิวจะทําหนาที่สงขอมูลไปยังคลาส CMyAlgorithm เพื่อทําการประมวลผลการทํา Histogram Equalization โดยมีการเพิ่มขอมูลลงในฟงกชันที่ไดทําการแม็พเมสเสจในขั้นตอนที่ 3 เรียบรอยแลว ใหทําการเพิ่มโคดโปรแกรมลงในฟงกชันตางๆดังนี้ • เพิ่มโคด CImageProcessingView::OnHistogramEqaulization ดังนี ้ void CImageProcessingView::OHistogramEqaulization()

{   CImageProcessingDoc* pDoc = GetDocument();   ASSERT_VALID(pDoc);    CMyAlgorithm* pImage = pDoc‐>GetImage();   if(pImage == NULL) return;    pImage‐>HistogramEqualization();   pDoc‐>UpdateAllViews(NULL); } 

Page 8: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  50 Chapter 4 Histogram and Histogram Equalization • เพิ่มโคด CImageProcessingView::OnRGBHistograms ดังนี ้ การทํางานของฟงกชันเริ่มตนดวยการหาคาพอยนเตอรของคลาสด็อกคิวเมนต เพื่อช้ีไปยังฟงกชัน GetImage ซ่ึงจะคืนคาพอยนเตอรของคลาส CMyAlgorithm จากนั้นจะสรางตัวแปรพอยนเตอรสําหรับเก็บคาสีแดง (pRed) สีเขียว (pGreen) สีน้ําเงิน (pBlue) สีขาว-ดํา (pGray) เพื่อเก็บคาความถี่ที่เกิดซ้ํา (Frequency Count) สงคาที่ไดพล็อตกราฟฮิสโทแกรมในไดอะล็อก ผานอ็อปเจ็กต mHis เปนการสืบทอดมาจากคลาส void CImageProcessingView::OnRGBHistograms(){   CImageProcessingDoc* pDoc = GetDocument();   ASSERT_VALID(pDoc);    CMyAlgorithm * pImage = pDoc‐>GetImage();   if (pImage == NULL)  return;   if (pImage‐>IsIndexed()) return;    int *pGray, *pRed, *pGreen, *pBlue;   pGray = new int [256];    pRed = new int [256];    

pGreen = new int [256];  pBlue = new int [256];    for (int i = 0; i < 256; i++)   pGray[i] = 0;    memset(pBlue, 0, (256)*sizeof(int));   memset(pRed , 0, (256)*sizeof(int));   memset(pGreen, 0, (256)*sizeof(int));      int  maxX = pImage‐>GetWidth(),  maxY = pImage‐>GetHeight();      BYTE *pSrc;   BYTE gray;   for (int y=0; y < maxY ; y++)   {     for  (int x=0; x<maxX; x++)      {        pSrc = (BYTE*)pImage‐>GetPixelAddress( x,y );       gray = (BYTE)((pSrc[0]+pSrc[1]+pSrc[2])/3);         pGray[gray]++;       

pRed[pSrc[2]]++;       pGreen[pSrc[1]]++;    

pBlue[pSrc[0]]++;     }   }   int nPixels = maxX*maxY;      CHistogram mHis;    mHis.m_pG = pGray;   mHis.m_pR = pRed;   mHis.m_pGr =pGreen;   mHis.m_pB = pBlue;   mHis.m_nPixels = nPixels;   mHis.DoModal();    delete [] pGray;        delete [] pRed ;       delete [] pGreen ;    delete [] pBlue; } 

คํานวณสถิติของระดับขาว-ดํา สีแดง สีเขียว และสีน้ําเงิน   สงผลการคํานวณที่ไดใหกับไดอะล็อกสําหรับพล็อตกราฟฮิสโทแกรม สวนประกอบสีแดง สีเขียว สีน้ําเงิน และระดับขาว-ดํา

Page 9: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  51 Chapter 4 Histogram and Histogram Equalization CHistogram แลวทําการกําหนดคาเริ่มตนตางๆใหกับสมาชิกเพื่อแสดงกราฟฮิสโทแกรม จากนั้นเรียกใชคําสั่ง DoModal เพื่อแสดงไดอะล็อกสําหรับพล็อตกราฟฮิทโทแกรมได ขั้นตอนที่ 5 ทดสอบผลการทํางานของโปรแกรม การทํางานของโปรแกรมเริ่มตนดวยการเลือกภาพบิตแมพที่ตองการ เปดเขามายังโปรแกรม ImageProcessing ในบทนี้ทดสอบดวยภาพบิตแมพซึ่งขอมูลในแตละภาพมีคุณสมบัติเหมือนกันทุกประการ เพื่อที่จะแสดงใหเห็นถึงการเปลี่ยนแปลงของภาพเมื่อผานกระบวนการทํา Histogram Equalization มีขั้นตอนการทดสอบดังนี้ • เลือกรัน(Run) โปรแกรมจะปรากกฎหนาตางของโปรแกรม ImageProcessing ใหทําการเปดไฟลขอมูล ภาพบิตแมพ จะปรากฏไดอะล็อกสําหรับเปดไฟลภาพ เลือกภาพที่ตองการ ดังภาพที่ 9 ภาพที่ 9 หนาตางโปรแกรม Image Processing

Page 10: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  52 Chapter 4 Histogram and Histogram Equalization • ทําการเปดภาพตนฉบับจํานวน 1 ภาพ ดังภาพที ่10 จากนั้นเลือกเมนู Histogram > R-G-B Histogram ผลที่ไดเปนการแสดงกราฟทางสถิติของขอมูลภาพ ดังภาพที่ 11 ภาพที ่10 ภาพตนฉบับสําหรับการแสดงสถิติขอมูลภาพดวยฮิทโทแกรม ภาพที ่11 แสดงสถิติขอมูลภาพตนฉบับดวยฮิทโทแกรม

Page 11: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  53 Chapter 4 Histogram and Histogram Equalization • จากภาพตนฉบับ เลือกเมนู Histogram > Histogram Equalization ผลที่ไดทําใหภาพมีความสวางกระจายทั่วทั้งภาพ สงผลใหภาพคมชัดมากขึ้น ดังภาพที่ 12 และแสดงกราฟทางสถิติของขอมูลภาพที่ผานการทํา Histogram Equalization ดังภาพที่ 13 ภาพที ่12 การทํา Histogram Equalization ภาพที ่13 แสดงสถิติขอมูลภาพที่ผานการทํา Histogram Equalization

Page 12: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  54 Chapter 4 Histogram and Histogram Equalization • จากขอมูลจากภาพตนฉบับแสดงการเปรียบเทียบกับขอมูลภาพที่ผานกระบวนการทาํ Histogram Equalization สามารถแสดงรายละเอียดทางสถิติในแตละสวนประกอบสี ไดดังภาพที่ 14 ภาพที่ 14 แสดงสถิติในแตละสวนประกอบสี สถิติสวนประกอบสีเขียว สถิติสวนประกอบสีแดง สถิติสวนประกอบสีน้ําเงิน สถิติสวนประกอบระดับสีขาว-ดํา 

Page 13: การประมวลผลภาพด้วยดิจิทัลด้วยโปรแกรม Visual C++ EP4 Histogram and Histogram Equalization

  หลักสูตร Machine Vision วิทยากรโดย ผศ.ดร.พูลศักดิ์ โกษียาภรณ และณัฐพล จะสูงเนิน (เรียบเรียง)  55 Chapter 4 Histogram and Histogram Equalization  หนังสือ 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 ทางผูจัดทําขอขอบพระคุณทุกทานที่กลาวถึงในขอมูลอางอิง ที่ไดจัดทําขอมูลที่มีความรูที่ดีและเปนประโยชนตอการเรียนรู ขอผลบุญทางความรูทั้งหมดอุทิศแดพอแม ครูอาจารย และเจากรรมนายเวรของขาพเจา เทอญฯ