Login | thai-learning | Privacy Policy | About Us |

Thai Learning | ทฤษฎี IS ขั้นสูง | เว็บไทย | สารสนเทศวิทยานิพนธ์ | หนังสือรามคำแหงทั้งหมด | เกี่ยวกับผู้จัดทำ | บทกลอน |
วิชาที่เรียน 1/2555
   เมนูหลักวิชาเรียน 1/2555
   การโปรแกรมเว็บสารสนเทศ ฯ
   การโปรแกรมงานภูมิศาสตร์ ฯ
   โปรแกรมสำหรับงานสารสนเทศ
   อินเตอร์เน็ตและการบริการ สารสนเทศบนเว็บ
   บรรยากาศ เทอม 1-2555
โปรแกรมที่ผมพัฒนาครับ
   เมนูหลักโปรแกรมที่ผมพัฒนา
   ถอดรหัสผ่าน M$-Access
   ระบบการเข้าเรียนและให้คะแนน
   การทำงานของ Adder Logic
   ปรับระดับเสียงโวลุ่ม ด้วย CLI
   เกมส์เลื่อนภาพแสนสนุก vb6
บทความที่ผมเขียนครับ
   เมนูบทความ
   ภาษาซีสำหรับผู้เริ่มต้น
   ไมโครคอนโทรเลอร์เบื้องต้น
   ไมโครคอนโทรลเลอร์จำลอง
   การกำเนิดกระแสไฟฟ้าอย่างง่าย
   ควบคุมแรงดัน 0-220 โวลท์
   Graphics LCD ด้วย CCSC
   การออกแบบ PCB ด้วย Orcad
   การออกแบบ PCB ด้วย Protel
   ไพธอนส่งเมล์ด้วย GPRS
   ไพธอนควบคุม LCD ผ่าน LPT
   ควบคุม LPT ด้วย Labview
   อิมเมจโปรเซสซิ่ง ตอน 1/3
   อิมเมจโปรเซสซิ่ง ตอน 2/3
   อิมเมจโปรเซสซิ่ง ตอน 3/3
   ภาษาซีบนลินุกซ์สมองกลฝังตัว
   การใช้งาน MinGW เบื้องต้น
   ภาษาซี ARM-LPC2368
   ออกแบบ FPGA ด้วย Schematic
   ออกแบบ FPGA ด้วยภาษา VHDL
   ออกแบบ PCB เทคนิค Dryfilm
   เขียนโปรแกรม Python GUI
   การติดตั้ง NumPy 1.6.1
   เขียนไพธอนถอดรหัส MDB
   วิชวลเบสิค ควบคุมกล้อง
   สังเคราะห์ภาพกราฟิก pov-ray
   อิมพอร์ท MySQL ด้วย BigDump
   ติดตั้ง postgresql และ phppgadmin บน centos linux
   การใช้งานเธรดด้วยภาษา PHP
   การสังเคราะห์สีให้ไวยากรณ์ภาษา
   การสร้าง Search Engine
   เขียนไพธอน Client/Server
   การสร้างพาทิชั่นที่ใหญ่กว่า 3TB บนลินุกซ์ (Ubuntu)
   การรันสคริปต์ CGI ด้วยภาษาไพธอน
   การใช้งานคำสั่ง DD บน Ubuntu - Linux
   การใช้งาน Raspberry Pi
   การเอ็กซีคิวส์ + การจัดเรียงแอพฯในลินุกซ์
   X11 ด้วย Xming และ Putty
   TITAN5 บน Ubuntu - Linux
   รหัสจังหวัดทั่วโลก + เรดาร์
   การควบคุมเว็บบราวเซอร์ผ่าน SELENIUM ด้วยภาษาไพธอน
โปรแกรมภาษา
   เมนู VB-Classic
   ฟังก์ชั่น Visual Basic
   คำสั่ง Visual Basic
   ตัวแปรภาษาไพธอน (ขั้นสูง)
   โมดูลต่าง ๆ ภายในภาษาไพธอน
ข่าวสารไอที
   กูเกิ้ลเปิดตัว Tablet 7 นิ้ว
   อินเดีย IIT เปิดตัว Tablet
   RaspBerry PI สมองกลฝังตัว
   คอมพิวเตอร์จิ๋ว
บริการสารสนเทศ
   ไทยเว็บ 2012
   เว็บไทย
   ฐานข้อมูล วิทยานิพนธ์
   รวมคำศัพท์ภาษาไทย
   เคยฟังมั้ย - เพลงมาร์ช มมส
   ประวัติศาสตร์ชาติไทย หลวงปู่ฤาษีลิงดำ
   เพลงน้อมใจปล่อยวาง 1
   เพลงน้อมใจปล่อยวาง 2
   เพลงน้อมใจปล่อยวาง 3
เกี่ยวกับเรา
   เกี่ยวกับผู้ก่อตั้ง
   บทกลอนที่ผมแต่งครับ..
   แลกลิงค์กับเรา ที่นี่
   รายละเอียดแม่ข่าย
   ดาต้าเซนเตอร์ (Data Center)
   เงื่อนไขการใช้งาน

  
 

บทความเรื่อง : อิมเมจโปรเซสซิ่งสำหรับผู้เริ่มต้น ตอน 1
เขียนโดย อ.จักรกฤษณ์ แสงแก้ว สาขาสารสนเทศศาสตร์ คณะวิทยาการสารสนเทศ มหาวิทยาลัยมหาสารคาม


วันนี้ผู้เขียนขอนำท่านศึกษาและทำความเข้าใจเกี่ยวกับอิมเมจโปรเซสซิ่ง (Image Processing) ซึ่งศาสตร์ด้านนี้เป็นการเปลี่ยนภาพต่าง ๆ ที่ได้จากกล้องหรือจากการสแกน ตลอดจนข้อมูลภาพในรูปดิจิตอล แล้วนำไปผ่านกระบวนการบางอย่างเพื่อให้เกิดเป็นภาพใหม่ เช่น ภาพที่มีความคมชัดสดใส หรือภาพที่เบลอเป็นต้น นอกจากนั้นได้มีการนำอิเมจโปรเซสซิ่งใช้งานระบบรู้จำลายมืออีกด้วย บริษัทไอโอมีเซียม ที่ออสเตเรีย ผู้เขียนได้มีโอกาสรู้จักรุ่นน้อง คือ คุณศักดิ์รภี ซึ่งมีความเชี่ยวชาญด้านอิมเมจโปรเซสซิ่ง โดยได้ทำระบบ Motion Detect เพื่อตรวจนับจำนวนคน หรือตรวจสอบการเคลื่อนที่ของวัตถุต่าง ๆ ภายในภาพ ซึ่งนำไปใช้เกี่ยวกับระบบรักษาความปลอดภัยในท่าอากาศยานและอื่น ๆ อีกมาก

หลักการทางอิมเมจโปรเซสซิ่งมีวิธีคิดที่เรียบง่าย ไม่ยุ่งยากมากนัก แต่สิ่งที่ทำให้เกิดปัญหาต่อการเรียนรู้สำหรับผู้ศึกษาเริ่มต้นคือ สมการคณิตศาสตร์ ดังนั้นบทความนี้ขอเลี่ยงการนำเสนอด้วยสมการเหล่านั้น.. เราจะศึกษาและให้เข้าใจแนวคิดซึ่งถือว่าเป็นแกนกลางองค์ความรู้ของศาสตร์ในสาขานี้

การเข้าถึงตำแหน่งของภาพ
ถ้าเราขยายภาพหนึ่ง ๆ เราจะพบว่า ภายในภาพเหล่านั้นประกอบด้วยเม็ดสีมากมายที่วางเรียงกันอย่างเป็นลำดับที่แน่นอน เม็ดสีที่เล็กที่สุดเราเรียกว่า พิกเซล (Pixel) ขอให้พิจารณาภาพต่อไปนี้

                   
ภาพต้นฉบับ :                                              ภาพขยาย

ภาพนี้ผู้เขียนถ่ายจากมหาวิทยาลัยราชภัฎสงขลา เมื่อ 23 เมษายน 2548 ระหว่างการอบรมภาษาไพธอนที่นั่น ถ้าท่านสังเกตกรอบสี่เหลี่ยมสีแดง ท่านจะพบว่าเมื่อขยายบริเวณดังกล่าวจะมีผลลัพธ์ดังภาพด้านขวามือ ซึ่งประกอบด้วยพิเซลต่าง ๆ จำนวนมากวางเรียงต่อกันไป

หลักการหรือแก่นแนวคิด
ท่านต้องอ่านให้ได้ว่าสีแต่ละจุดมีค่าเป็นตัวเลขเป็นเท่าใด โดยปกติฟังก์ชั่นที่เราใช้ในการอ่านสีจากภาพคือ GetPixel() โดยเราต้องป้อนตำแหน่ง x และ y ที่ต้องการเข้าถึงลงไปด้วย ผลลัพธ์จากการเรียกใช้ฟังก์ชั่นนี้ คือค่าสีของตำแหน่งที่เราต้องการ ผู้อ่านอย่าพึ่งใจร้อน เพราะประเดี๋ยวผู้เขียนจะนำท่านไปศึกษา ตัวอย่างโปรแกรมซึ่งเขียนด้วยภาษาไพธอน แล้วเพื่อน ๆ จะกล่าวเป็นเสียงเดียวกันว่า ง่ายอย่างนี้หรือ !!

ในการเข้าถึงตำแหน่งของภาพจะใช้การอ้างถึงโดยพิกัดคาร์ทีเซียน หรือ (x และ y) รายละเอียดเกี่ยวกับคาร์ทีเซียนโคออดิเนต (Cartesian Coordinate) ขอให้ท่านศึกษาได้จากวิชาคณิตศาสตร์เบื้องต้น เรื่องระบบโคออดิเนต (Coordinate Systems)

เครื่องมือที่ต้องการ
ก่อนอื่นผู้เขียนอนุมานว่าท่านได้ติดตั้งรายการต่อไปนี้ในระบบปฏิบัติการของท่าน และท่านควรมีความรู้พื้นฐานภาษาไพธอนมาแล้ว
1. ภาษาไพธอน
2. โมดูล PIL (Python Image Library)

ตัวอย่าง 1: อ่านสีของภาพออกมา และเปลี่ยนค่าสีแดงเป็นศูนย์
 
รูปต้นฉบับ : รูปนี้เก็บไว้ที่ c:\temp\test.bmp

ตัวอย่าง อ่านสีของภาพออกมา และเปลี่ยนค่าสีแดงเป็นศูนย์
import Image
im = Image.open("c:\\temp\\test.bmp")
def gen(im):
          for i in range(im.size[0]):

                   for j in range(im.size[1]):

                             tmp = im.getpixel((i,j))

                             tmp = list(tmp)

                             tmp[0] = 0

                             tmp = tuple(tmp)

                             im.putpixel((i,j),tmp)

          return im
m = gen(im)
m.save("c:\\temp\\x.bmp")


จากตัวอย่างนี้ im ถือว่าเป็นอ็อบเจ็คของคลาส Image โดยมีข้อมูลซึ่งโหลดจากไฟล์ test.bmp ถ้าท่านใช้คำสั่ง im.size จะพบว่าผลลัพธ์แสดงอยู่ในรูป tuple มีสมาชิกสองตัว คือ im.size[0] แทนความกว้างของภาพ และ im.size[1] คือความสูงของภาพ

ตัวอย่างนี้เราจะวิ่งจากตำแหน่ง 0 ไปจนถึงความกว้างของภาพ จากนั้นเราจะค่อย ๆ เลื่อนตำแหน่งมาเรื่อย ๆ จากด้านล่างสุดของภาพไปถึงบนสุดของภาพ ในตัวอย่างนี้ผู้เขียนสร้างตัวแปรชื่อ tmp = im.getpixel((i,j)) โดยอ่านพิกัดของจุดปัจจุบันออกมาเก็บไว้ในตัวแปร tmp ซึ่งตัวแปรที่อ่านมาได้จะมีชนิดเป็น tuple โดยมีสมาชิกสามตัว คือ ค่าสีแดง, สีน้ำเขียว และสีน้ำเงิน เช่น (100,212,10) หมายถึงมีค่าสีแดงเท่ากับ 100 และค่าสีเขียวเท่ากับ 212 ตัวเลขสุดท้ายคือค่าสีน้ำเงิน มีค่าเป็น 10 ดังนั้น ตัวอย่างนี้เราต้องการเปลี่ยนสีแดงให้เป็นศูนย์ ดังนั้นค่าสีจะมีค่าเมื่อถูกเปลี่ยนแปลงเท่ากับ (0,212,10) แต่เนื่องจากในเชิงโปรแกรมมิ่งเราไม่สามารถเข้าแก้ไขข้อมูลแบบ tuple ได้โดยตรง (Immutable) ดังนั้นเราเปลี่ยนเป็น list ด้วยคำสั่ง tmp=list(tmp) จากนั้น เปลี่ยนสมาชิกตัวแรกให้เป็น 0 และสมาชิกที่เหลือให้เป็นค่าเดิมโดยไม่แก้ไข ลำดับถัดมาแปลง list เป็น tuple ให้เหมือนเดิม แล้วจึงนำค่าสีที่แปลงแล้ว ใส่กลับเข้าไปที่ตำแหน่งเดิม ด้วยคำสั่ง im.putpixel((i,j),tmp) ขอให้ท่านพิจารณาอย่างเป็นลำดับ ช้า ๆ ไม่ต้องรีบร้อน ท่านจะพบว่า ภาพทั้งภาพได้เปลี่ยนส่วนที่เป็นสีแดง ให้มีค่าเป็น 0 หมดแล้ว ดังนั้น ผลลัพธ์ของภาพนี้ แสดงได้ดังนี้


ภาพผลลัพธ์ : แสดงถึงการเปลี่ยนค่าสีแดง (Red) ให้เป็น 0 (ทั้งภาพ)

ตัวอย่าง 2: สลับค่าสีระหว่าง (255,255,255) และ (0,0,0)
ถ้าท่านต้องการเปลี่ยนค่าสีจากขาวเป็นดำ และเปลี่ยนจากดำเป็นขาว ดังนั้นท่านต้องทำการสลับสีโดยสีขาว คือค่า (255,255,255) และสีดำมีค่า (0,0,0) หลักการคือท่านเข้าไปอ่านค่าสีแต่ละตำแหน่งพิกเซลจากนั้น หากค่าสีที่ได้เป็น (255,255,255) ให้เปลี่ยนเป็น (0,0,0) และเขียนทับลงไปยังค่าสีที่ตำแหน่งปัจจุบัน ในทางกลับกัน ถ้าสีที่อ่านได้เป็นค่า (0,0,0) ให้เปลี่ยนเป็น (255,255,255) และเขียนกลับลงไปในตำแหน่งปัจจุบัน รายละเอียดสามารถแสดงได้ดังตัวอย่างต่อไปนี้
 
รูปต้นฉบับ : รูปนี้เก็บไว้ที่ c:\temp\test.bmp
ตัวอย่าง สลับค่าสีระหว่าง (255,255,255) และ (0,0,0)
import Image
im = Image.open("c:\\temp\\test.bmp")
>>> def gen(im):
          for i in range(im.size[0]):
                   for j in range(im.size[1]):
                             tmp = im.getpixel((i,j))
                             if tmp == (0,0,0):
                                      tmp = (255,255,255)
                             else:
                                      tmp = (0,0,0)
                             im.putpixel((i,j),tmp)
          return im

>>> m = gen(im)
>>> m.save("c:\\temp\\x2.bmp"
จากตัวอย่างนี้หากท่านเอ็กซีคิวส์ผ่าน (Execute) ท่านจะได้ผลลัพธ์ภาพเก็บไว้ในไฟล์ชื่อ x2.bmp เมื่อเปิดด้วยโปรแกรม Image Viewer จะปรากฎผลลัพธ์ดังภาพต่อไปนี้


ตัวอย่าง 3-4 : การเปลี่ยนแปลงค่าสีของภาพ
ขอให้ท่านพิจารณาตัวอย่างต่อไปนี้
ภาพต้นฉบับ
สลับค่าสีระหว่าง (255,255,255) และ (255,0,0)
>>> import Image
>>> im = Image.open("c:\\temp\\test.bmp")

>>> def gen(im):
          for i in range(im.size[0]):
                   for j in range(im.size[1]):                              tmp = im.getpixel((i,j))                              if tmp == (255,255,255):                                       tmp = (255,0,0)                              im.putpixel((i,j),tmp)
          return im


>>> im = Image.open("c:\\temp\\test.bmp")
>>> m = gen(im)
>>> m.save("c:\\temp\\x3.bmp")
 
สลับค่าสีระหว่าง (255,255,255) และ (0,255,0)
>>> import Image
>>> im = Image.open("c:\\temp\\test.bmp")
>>> def gen(im):
          for i in range(im.size[0]):
                   for j in range(im.size[1]):                              tmp = im.getpixel((i,j))                              if tmp == (255,255,255):                                       tmp = (0,255,0)                              else:
                                      tmp = (0,0,255)                              im.putpixel((i,j),tmp)
          return im

>>> im = Image.open("c:\\temp\\test.bmp")
>>> m = gen(im)
>>> m.save("c:\\temp\\x4.bmp")
 
ตัวอย่างด้านบนใช้หลักการเหมือนตัวอย่างแรกสุดของบทความนี้ เพียงแต่เปลี่ยนสีจาก (255,255,255) เป็น (255,0,0) กล่าวคือเปลี่ยนสีขาว(255,255,255) เป็นสีแดง(255,0,0) ในขณะที่อีกตัวอย่างเปลี่ยนจากสีขาวเป็นสีเขียว และสีใดไม่ใช่สีขาวให้เปลี่ยนเป็นสีน้ำเงิน (0,0,255)

ตัวอย่าง 5 : ตัวอย่างเดียวกับข้อ 4 แต่ใช้ภาพต้นฉบับที่ต่างกันไป

   
ภาพต้นฉบับ         ภาพที่ผ่านการประมวลผลจากตัวอย่างที่ 4
ตัวอย่างนี้แสดงให้ท่านเห็นว่า แม้ว่ารูปภาพต้นฉบับของเราจะเป็นอย่างไรก็ตาม แต่ถ้าหากผ่านเงื่อนไขอย่างเดียวกัน ดังนั้น ย่อมให้ผลลัพธ์ซึ่งเป็นไปตามกฎเกณฑ์ที่ตั้งไว้เสมอ ตัวอย่างนี้เปลี่ยนสีขาวเป็นสีเขียว และถ้าสีใดไม่ใช่สีขาวให้เปลี่ยนเป็นสีน้ำเงิน

ตัวอย่าง 6 : การผสมภาพเข้าด้วยกัน

สำหรับตัวอย่างถัดไปจะนำท่านสร้างแอพลิเคชั่นเล็ก ๆ เพื่อทำการผสมภาพสองภาพเข้าด้วยกัน ท่านต้องแน่ใจว่าภาพทั้งสองขนาดความกว้างและสูงเท่ากัน รายละเอียดประกอบด้วย

             
ภาพต้นฉบับ ชื่อ s.bmp                               ภาพที่จะถูกนำมาผสมเข้ากับภาพต้นฉบับ (ชื่อ d.bmp)

ตัวอย่าง การผสมภาพเข้าด้วยกัน
>>> def merge(s,d):
          ratio = 0.5
          for i in range(s.size[0]):
                   for j in range(s.size[1]):
                             tmp1 = s.getpixel((i,j))
                             tmp2 = d.getpixel((i,j))
                             tmp2 = list(tmp2)
                             tmp = [(tmp1[0]+tmp2[0])*ratio,(tmp1[1]+tmp2[1])*ratio,(tmp1[2]+tmp2[2])*ratio]                              tmp = tuple(tmp)
                             s.putpixel((i,j),tmp)
          return s
>>> import Image
>>> s = Image.open("c:\\temp\\s.bmp")
>>> d = Image.open("c:\\temp\\d.bmp")
>>> m = merge(s,d,0.5)
>>> m.save('c:\\temp\\m.bmp')

จากตัวอย่างด้านบน เรานำภาพสองภาพเข้ามาและอ่านพิกัดไปพร้อม ๆ กัน แล้วนำพิกัดทั้งสองบวกกัน และคูณด้วยค่าสัดส่วนที่เราต้องการ ในตัวอย่างนี้กำหนดเป็น 0.5 หมายถึงการหารด้วย 2 ผลลัพธ์แสดงได้ดังภาพต่อไปนี้


ตัวอย่างนี้เป็นการ merge ภาพสองภาพเข้าด้วยกัน

ตัวอย่าง 7 : เทคนิคนี้เหมือน Blue Screen ที่ใช้ในภาพยนต์

ถ้าเรามีภาพสองภาพ โดยภาพที่จะนำมาผสมมีมีพื้นเป็นสีขาว เราจะไม่นำสีขาวไปวาดลงบนภาพต้นฉบับ แต่ถ้าเป็นสีอื่นนอกจากสีขาวจะทำการวาดลงบนภาพต้นฉบับ ขอให้พิจารณาตัวอย่างต่อไปนี้

             
ภาพต้นฉบับ ชื่อ s.bmp                               ภาพที่จะถูกนำมาผสมเข้ากับภาพต้นฉบับ (ชื่อ d.bmp)

ตัวอย่าง เทคนิคนี้เหมือน Blue Screen ที่ใช้ในภาพยนต์
>>> def merge(s,d):
          for i in range(s.size[0]):
                   for j in range(s.size[1]):
                             tmp1 = s.getpixel((i,j))
                             tmp2 = d.getpixel((i,j))
                             if tmp2 == (255,255,255):
                                      tmp = tmp1
                             else:
                                      tmp = tmp2
                             s.putpixel((i,j),tmp)
          return s>>> import Image
>>> s = Image.open("c:\\temp\\s.bmp")
>>> d = Image.open("c:\\temp\\d.bmp")
>>> m = merge(s,d,0.5)
>>> m.save('c:\\temp\\m.bmp')
ตัวอย่างด้านบนเป็นการรวมภาพสองภาพเข้าด้วยกันโดยมีเงื่อนไขคือ หากภาพที่นำมารวมมีพื้นสีขาวให้วาดสีต้นฉบับ ในกรณีอื่น ๆ ให้วาดสีของภาพปลายทางลงไปแทน ผลลัพธ์ที่ได้แสดงได้ดังภาพต่อไปนี้



การทำภาพเบลอ (Blur)
ภาพเบลอเป็นเทคนิคการเฉลี่ยสีของภาพรอบ ๆ ข้าง ดังนั้นภาพที่ผ่านเทคนิคนี้จะให้ความรู้สึกเหมือนภาพเบลอ
ในตัวอย่างนี้อ่านค่าสีทั้งหมด 5 ค่าสี คือ
- ค่าสีตำแหน่งปัจจุบัน
- ค่าสีตำแหน่งซ้ายมือของตำแหน่งปัจจุบัน
- ค่าสีตำแหน่งขวามือของตำแหน่งปัจจุบัน
- ค่าสีตำแหน่งด้านบนของตำแหน่งปัจจุบัน
- ค่าสีตำแหน่งด้านล่างของตำแหน่งปัจจุบัน
ในการอ่านแต่ละรอบจะอ่านค่าสีถึง 5 ตำแหน่ง ซึ่งตัวอย่างที่ผ่านมาอ่านเพียงตำแหน่งเดียว เมื่ออ่านค่าสีมาครบแล้วให้ทำการเฉลี่ย (หารด้วย 5) จากนั้นนำค่าผลลัพธ์เก็บไว้ในตำแหน่งปัจจุบัน และทำไปเรื่อย ๆ จนครบทุกพิเซล

ขอให้พิจารณาตัวอย่างต่อไปนี้

ตัวอย่าง การทำภาพเบลอ (Blur)
def blur(s):
          for i in range(1,s.size[0]-10):
                   for j in range(1,s.size[1]-10):
                             l = list(s.getpixel((i-1,j)))
                             r = list(s.getpixel((i+1,j)))
                             t = list(s.getpixel((i,j-1)))
                             b = list(s.getpixel((i,j+1)))
                             c = list(s.getpixel((i,j)))
                             red = (l[0]+r[0]+t[0]+b[0]+c[0])/5.0
                             green = (l[1]+r[1]+t[1]+b[1]+c[1])/5.0
                             blue = (l[2]+r[2]+t[2]+b[2]+c[2])/5.0
                             tmp = (red,green,blue)
                             s.putpixel((i,j),tmp)
          return s
>>> import Image
>>> p = Image.open("c:\\temp\\chakrit.bmp")
>>> m = blur(p)
>>> m.save("c:\\temp\\m.bmp")

จากตัวอย่างด้านบนทำให้ภาพต้นฉบับเบลอ และถ้าท่านนำเอาภาพที่ผ่านการทำฟิลเตอร์เบลอมาทำเบลออีกรอบ จะทำให้ภาพนั้นเบลอยิ่งขึ้น ดังภาพต่อไปนี้

                                                                           
ภาพต้นฉบับ                        ภาพผ่าน Filter Blur หนึ่งครั้ง         ผ่าน Filter Blur สองครั้ง                ผ่าน Filter Blur สามครั้ง

สรุป
บทความนี้ได้นำท่านเรียนรู้และเข้าใจหลักการและแนวคิดพื้นฐานของอิมเมจโปรเซสซิ่ง (การประมวลผลภาพ) ท่านสามารถใช้ภาษาใด ๆ ในการอิมพลิเมนต์ได้ทั้งสิ้น ไม่ว่าจะเป็น Assembly, C/C++, Visual C++, Visual Basic และอื่น ๆ อีกมากมาย และในตัวอย่างนี้ผู้เขียนเลือกใช้ภาษาไพธอน หวังเป็นอย่างยิ่งว่า บทความนี้จะกระตุ้นให้ท่านเกิดแรงศรัทธาในการเรียนรู้ได้บ้าง.. ขอเป็นกำลังใจให้กับทุก ๆ ความพยายาม สู้ต่อไป "ไอ้มดแดง"

หมายเหตุ :
ตรามหาวิทยาลัยสร้างขึ้นโดยผู้เขียนโดยใช้ 3D-Studio Max และใช้ Material สีทองทำ Surface บนโมเดล ประมวลผลด้วยซีพียู 200 MHz หน่วยความจำ 64 Mb ฮาร์ดดีสก์ 20 GB สร้างเอาไว้เมื่อปี พ.ศ. 2542






All trademarks and trade names are the property of their respective owners and used here for identification purposes only.
Privacy Policy | Terms of service | Report a Policy Violation (0.0064 sec)