autoworks24.com

Image Processing Python สอนการเขียนโค้ด python เพื่อทำการรับภาพมาใช้

Image Processing Python สอนการเขียนโค้ด python เพื่อทำการรับภาพมาใช้

Image Processing Python สอนการเขียนโค้ด python เพื่อทำการรับภาพมาใช้

Image Processing Python สอนเขียนอธิบายเกี่ยวกับพิกเซล และ การเขียนโค้ด python เพื่อทำการรับภาพมาใช้ในการศึกษา Let’s Go พิกเซล (Pixel) คือ หน่วยพื้นฐานเล็กสุดบนจอภาพดิจิทัล หรือ จุดภาพบนจอแสดงผล เช่น จอคอมพิวเตอร์ จอโทรทัศน์ กล้องถ่ายรูปดิจิทัล เป็นต้น ถ้าคุณมีโทรทัศน์เก่า ๆ แนะนำให้เปิดโทรทัศน์แล้วลองมองเข้าไปในจอแบบใกล้ๆ คุณจะเห็นเม็ด pixel เรียงตัวกัน ซึ่งแต่ละโทรทัศน์ก็จะมีลักษณะการจัดเรียงของเม็ด pixel ที่แตกต่างกันออกไป ซึ่งการจัดเรียงที่แตกต่างกันก็ส่งผลต่อการนำเสนอต่อความคมชัด ความถูกต้องของสี และ มุมในการมองอีกด้วย ทำให้เราจะเห็นว่ามีโทรทัศน์จอแบบใหม่ๆ ออกมาขายอยู่ตลอดเวลา Image Processing Python สอน โดยเราจะสังเกตว่า มีสามสีที่ถูกใช้หลัก ๆ คือ แดง (Red, R), เขียว (Green, G), น้ำเงิน (Blue, B). ซึ่งถ้าเราจำตอนเรียนสมัยประถม หรือ มัธยมได้ เราจะถูกสอนมาตลอดว่าแม่สีหลักสามสีก็คือสีเหล่านี้นั่นเอง ทำไมต้อง R, G, B อย่างที่กล่าวไปว่าแม่สีสามสีหลัก คือ สีแดง เขียว น้ำเงิน. โดยสามสีนี้เราสามารถที่จะนำมารวมกันทำให้มีสีหลากหลายมากขึ้น ยกตัวอย่างเช่น ถ้าคุณอยากได้สีเหลืองคุณก็เอาสีแดงกับเขียวมาผสมกัน หรือ ถ้าคุณอยากได้สีชมพู คุณก็เอาสีแดงกับน้ำเงินมาผสมกัน เป็นต้น Image Processing Python สอนเปลี่ยนสีเป็นตัวเลข ตอนนี้เรารู้แล้วว่าบนหน้าจออุปกรณ์อิเล็กทรอนิกส์ของเราเนี่ย Image Processing Python สอนการเขียนโค้ด python เพื่อทำการรับภาพมาใช้ สอน Image Processing

Image Processing Python สอน RGB สามแหล่งสีประกอบกัน

Image Processing Python สอนประกอบไปด้วยเม็ด pixel หลายๆ อันต่อกัน แต่ว่าด้วยความที่มันเล็กมากๆ พอเรามองดูจากระยะไกล ร้านขายบอร์ด Arduino ขอนแก่น ทำให้มันสามารถที่จะหลอกสายตาเราได้ Image Processing Python สอนในหนึ่งพิกเซลจะมีสามแหล่งสีประกอบกัน ได้แก่ แสงสีแดง (R), แสงสีเขียว (G) และ แสงสีน้ำเงิน (B). วิธีการสร้างหรือกำหนดสีต่างๆ ขึ้นมาทำได้ด้วยการระบุระดับความเข้มของแต่ละแหล่งแสงเป็นตัวเลขต่างๆ ซึ่งการระบุค่านี้จะทำให้เราสามารถมองเห็นโทนสีที่แตกต่างกันได้ โดยคนปกติทั่วไปจะมีการรับรู้เรื่องของสีอยู่แค่ระดับหนึ่งเท่านั้น ซึ่งหมายความว่าถ้ามันเกินช่วงนี้ไป คนจะไม่สามารถแยกแยะความแตกต่างของสีนั้นๆได้ ดังนั้นมันจึงมีการทดลองนู่นนี่นั่น แล้วก็สรุปความมาว่าการใช้ระดับความของเข้มแต่ละแหล่งแสงประมาณ 256 ระดับ มันเพียงพอเพื่อให้การไล่ระดับสีดูราบรื่น และ ให้คนสามารถแยกแยะความแตกต่างได้ ซึ่งระดับแสง 256 ระดับเนี่ย สามารถแทนด้วยเลข 8 บิตหรือ 1 ไบต์นั่นเอง สรุปถ้าเราต้องการสร้างสี ๆ หนึ่ง เราจะต้องกำหนดค่าความเข้มของทั้งสามแหล่งสี (R, G, B) ด้วยเลขต่างๆ โดยค่า R,G,B เป็นจะต้องเป็นเลขจำนวนเต็มที่อยู่ในช่วง 0-255 เช่น สีแดงเข้ม (255, 0, 0), สีเขียวเข้ม (0, 255, 0), และ สีชมพู (255,0 ,255) เป็นต้น ภาพ 3×3 pixel โดยแต่ละ pixel จะมีค่าระดับ RGB ในช่วง 0 ถึง 255 โดยที่ถ้าค่าสีมีค่าเข้าใกล้ 0 หมายความสีจะมีความมืดมากขึ้น แต่ถ้าสีมีค่าเข้าใกล้ 255 หมายความว่าสีจะมีความสว่างมากขึ้น Image Processing Python สอนการเขียนโค้ด python เพื่อทำการรับภาพมาใช้

Image Processing Python สอนการนำภาพถ่ายเข้ามาในโปรแกรม

Image Processing Python สอนรวมทั้งหมดให้เข้าใจง่ายๆ ก็คือ เวลาเราถ่ายภาพ แสงเข้าไปในกล้องตกกระทบกับเซ็นเซอร์ โดยเซ็นเซอร์ก็ทำการแปลงค่าแสงออกมาเป็น ค่าตัวเลขสีสามสี R, G และ B จากนั้นก็เอามาแสดงผลเป็นภาพดิจิตอลนั่นเอง หลังจากที่อธิบายเรื่อง Pixel กันไปยืดยาวหลายบรรทัด ต่อไปเรามาดูวิธีการนำภาพถ่ายเข้ามาในโปรแกรม ด้วยภาษา Python กันเถอะ การนำภาพเข้า และ แสดงผลภาพด้วยภาษา Python เริ่มต้นคุณก็ต้องมี library ที่จะโหลดรูป และ แสดงผลรูปก่อน ในที่นี้เราจะทดลองใช้หลากหลาย libray ในการโหลดภาพเข้า เช่น Matplotlib, OpenCV, Pillow, scikit-image เป็นต้น พวกวิธีการลงแนะนำให้ลอง search google ดู

import matplotlib.pyplot as plt

img = plt.imread(img_path) # example img_path: ‘amused_cat.jpg’

https://fr.wikipedia.org/wiki/OpenCV

import cv2

img = cv2.imread(img_path) # example img_path: ‘amused_cat.jpg’

https://commons.wikimedia.org/wiki/File:Pillow.library.png

from PIL import Image

img = Image.open(img_path) # example img_path: ‘amused_cat.jpg’

https://scikit-image.org

from skimage import io

img = io.imread(img_path) # example img_path: ‘amused_cat.jpg’

คำสั่ง python เหล่านี้ มีความแตกต่างกันเล็กน้อย โดยปกติภาพที่ทำการ read หรือ import เข้ามาจะเป็น Array-2D จำนวน 3 channel ซึ่งปกติ มักจะเรียง channel โดย channel 0,1,2 เป็น RGB ตามลำดับ ยกเว้น OpenCV ที่จะทำการอ่านรูปเข้ามาในลักษณะ Channel แบบ BGR เพราะฉะนั้นการที่จะนำภาพไปทำอะไรต่อต้องระวังให้มาก Image Processing Python สอนการเขียนโค้ด python เพื่อทำการรับภาพมาใช้ ร้านขาย Arduino ขอนแก่น

Image Processing Python สอน มี Function ที่สามารถเอาไปประยุกต์ใช้กับงานอื่นได้

Image Processing Python สอน หลายคนคงคิดว่า ในเมื่อมันไม่เหมือนชาวบ้านก็อย่าไปใช้งานมันเลย อยากจะ บอกมือใหม่ทุกท่านว่าอย่าคิดแบบนี้เด็ดขาด เพราะ library ที่มักจะไม่เหมือนชาวบ้านนั้นมันมักจะมีข้อดีอื่นๆ เช่น มี Function ที่สามารถเอาไปประยุกต์ใช้กับงานอื่นเป็นจำนวนมาก เป็นต้น เช่นเดียวกับ OpenCV เป็น library ที่แทบจะรวบรวมทุกอย่างที่ใช้ในงาน computer vision เพราะฉะนั้นหลังจากนี้ผมจะมีการนำ library ของ OpenCV เข้ามาใช้งานร่วมด้วยเป็นจำนวนมาก หลังจากที่เราอ่านภาพเข้ามาได้แล้วต่อมาเรามาแสดงผลตัวอย่างภาพกันเถอะ ในการแสดงผลภาพนั้น ปกติเราจะนิยมใช้ matplotlib มาแสดงผล เนื่องจากใช้งานง่าย และ สามารถปรับพารามิเตอร์การแสดงผลต่างๆ ได้ โดยตัวอย่างในวันนี้ขออนุญาตอัญเชิญน้องถั่วดำของเรามาเป็นแบบ

amused_cat.jpg

import matplotlib.pyplot as plt

img = plt.imread(‘amused_cat.jpg’) # ใช้ในการนำภาพเข้า หรือ อ่านภาพ

plt.imshow(img) # ใช้ในการแสดงภาพ

output

ต่อไปเราจะทำการดูขนาดของภาพ

print(img.shape)

height = img.shape[0] # ความสูง = จำนวน pixel ในแนวตั้ง หรือ row

width = img.shape[1] # ความกว้าง = จำนวน pixel ในแนวนอน หรือ column

print(‘width: ‘, width)

print(‘height: ‘, height)

output

ถัดไปมาดูค่าความเข้มของสี (Intensity) ของ pixel

print(img)

output

ซึ่งเราก็จะเห็นว่า ค่าความเข้มของสี หรือ ค่า intensity มีค่าอยู่ระหว่าง 0–255 สามารถโชว์ภาพได้แล้ว

เราไม่จำเป็นต้องทำการเปลี่ยน channel ไปมาๆ ก็ได้ เราแค่ต้องรู้ว่า format เป็นอย่างไร แล้วจะ process channel ไหน ก็เอา channel นั้นมาทำเลย เพราะฉะนั้นมือใหม่ควรเก็บ exp ไปก่อน พอเก๋าแล้ว เราก็จะสามารถทำอะไรแบบนี้ได้แบบชิวๆ Image Processing Python สอนการเขียนโค้ด python เพื่อทำการรับภาพมาใช้ คอร์สเรียน Image Processing

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *