Point Operation
การศึกษาการทำ Point operation ใน Image processing
การศึกษาการทำ Point operation ใน Image processing
Point Operation คือการกระทำบน pixel โดยตรงบนภาพ (Spatial domain processing)
$$ \begin{equation} \label{ref1} g(x,y) = T [ f(x,y) ] \end{equation} $$
\(f(x,y)\) คือ input image ที่ขึ้นกับตัวแปรต่างๆเช่นตำแหน่ง x,y \(g(x,y)\) คือ output (ที่ process แล้ว) image และ \(T\) เป็นการกระทำ (Operation ต่างๆบน \(f\) ในกรณี neighborhood พิจารณาเฉพาะขนาด 1x1 (1 pixel) \(g(x,y)\) ขึ้นอยู่กับ intensity ของรูปภาพ \(f\) ณตำแหน่ง x,y ดังภาพ เกิดเป็น Point Operation และเรียก \(T\) ว่า intensity transfomation function (Gonzalez Woods, 2002)
ในกรณีของ Point Operation เพื่อความสะดวกให้ r เป็น intensity ณ ตำแหน่ง x,y ใดๆของรูปภาพต้นฉบับ และ s เป็น intensity ณ ตำแหน่ง x,y ใดๆของรูปภาพผลลัพธ์ Point Operation สามารถลดรูปจาก \eqref{ref1} ได้เป็นสมการดังนี้
$$ \begin{equation} s = T(r) \end{equation} $$
หลักการของการปรับ Brightness ของภาพ คือ การเพิ่มค่าหรือลดค่าของแต่ละจุดของภาพ เช่นการบวก หรือ การคูณค่าคงที่เข้าไปเท่าๆกันที่ทุกจุด โดยค่า maximum ที่รับได้ของภาพก็ขึ้นอยู่กับ bit depth ของภาพ เช่น ถาพขนาด 8 bit จะสามารถเพิ่มค่าได้ไม่เกิน 255 นั่นหมายถึง หากค่าเกินมากกว่านี้ ค่าที่ได้ก็จะหยุดอยู่แค่ 255 นั่นเอง
$$ \begin{align} s& = r + K\\ s& = rK \end{align} $$
เมื่อ K เป็นค่าคงที่ใด
โค้ดที่นำมาใช้ในตัวอย่างนี้จะแสดงการปรับ Brightness ของภาพโดยการบวกและการคูณค่าคงที่เข้าไปที่ทุกๆ pixel ของภาพ โดยเริ่มจากการ Import ภาพเข้ามาก่อนและปรับภาพ RGB เป็น Gray scale จากนั้นทำการปรับ Brightness โดยใช้ฟังก์ชั่น setContrast()
โดยในตัวอย่างนี้จะทำการเปรียบเทียบภาพที่ได้จากการบวกและการคูณค่าคงที่เข้าไป โดยใช้ฟังก์ชั่น myBW()
เพื่อเปรียบเทียบค่า Histrogram
ภาพด้านล่างนี้เป็นการบวกและคูณทุกๆจุดของภาพด้วย 5 โดยภาพบนซ้ายคือ Original image, ภาพทางซ้ายตรงกลางคือ ภาพที่เกิดจากการบวกค่าคงที่ และภาพล่างซ้ายคือ ภาพที่เกิดจากการคูรค่าคงที่ ส่วนด้านขวามือจะเป็น Histrogram ของแต่ละภาพ จะเห็นว่าภาพที่ได้จากการคูณจะสว่างมากกว่าภาพที่ได้เจากการบวก และ Histrogram ขยับไปทางด้านขวาที่ค่า 255 จำนวนมาก
อธิบายหลักการทำ inverting ของภาพอย่างง่าย คือ การที่นำค่าที่แต่ละจุดของภาพมาทำกลับจาก 0 เป็น 100 และจาก 100 กลายเป็น 0 ยกตัวอย่างเช่น ภาพภาพหนึ่งขนาด 8 bit และมีค่าแต่ละจุดของภาพที่ 0, 100, 200 และ 255 ภาพนี้มีค่า maximum = 255 เมื่อทำการ Inverting จะได้ค่าใหม่ที่แต่ละจุดเป็น 255, 155, 55 และ 0 ตามลำดับ ดังนั้นภาพใหม่ที่ได้ก็จะกลับสีขาวเป็นสีดำ
$$ \begin{equation} s = L - 1 - r \end{equation} $$ เมื่อรูปภาพมี intensity level ในช่วง \([0, L-1]\)
โค้ดตัวอย่างนี้ได้ทำการ Inverting ภาพตัวอย่าง โดยการทำงานจะเริ่มจากการ Import รูปภาพเข้ามา และเปลี่ยนภาพ RGB ให้เป็น Gray Scale จากนั้นตรวจสอบว่าภาพนี้มีขนาดมากที่สุดเท่าไร และนำค่านั้นมาลบด้วยค่าที่แต่ละจุดของภาพ และจะได้ค่าของภาพใหม่ จากนั้นนำมา Plot ภาพและ กราฟ Histrogram จะเห็นได้ว่า กราฟ Histrogram สลับค่าจากซ้ายเป็นขวาและขวาเป็นซ้าย นั่นคือการ Invering Image นั่นเอง (ฟังก์ชั่น myBW()
ใช้สำหรับหา Histrogram ของภาพ Gray Scale)
อธิบายหลักการทำ inverting ของภาพอย่างง่าย คือ การที่นำค่าที่แต่ละจุดของภาพมาทำกลับจาก 0 เป็น 100 และจาก 100 กลายเป็น 0 ยกตัวอย่างเช่น ภาพภาพหนึ่งขนาด 8 bit และมีค่าแต่ละจุดของภาพที่ 0, 100, 200 และ 255 ภาพนี้มีค่า maximum = 255 เมื่อทำการ Inverting จะได้ค่าใหม่ที่แต่ละจุดเป็น 255, 155, 55 และ 0 ตามลำดับ ดังนั้นภาพใหม่ที่ได้ก็จะกลับสีขาวเป็นสีดำ
$$ \begin{equation} s = \left\{ \begin{array}{1 1} 1 & \quad \text{r $\in{[a,b]}$}\\ 0 & \quad \text{otherwise} \end{array} \right. \end{equation} $$ เมื่อ \(s,r\) อยู่ในช่วง \([0,1]\)
โค้ดตัวอย่างจะรับภาพ RGB ต่อจากนั้นจะคัดลอกภาพRGBแปลงเป็นภาพ GrayScale กระบวนการของการทำThresholdingจะทำโดยกำหนดช่วงภาพRGB ในของเขตค่าที่ต้องการจะตรวจจับ เมื่อpixelที่ตำแหน่งใดๆตรงกับที่ต้องการ จะทำการเปลี่ยนค่าpixelนั้นในภาพGrayScaleเป็น 255 และเมื่อ pixel ที่ตำแหน่งใดๆไม่ตรงกับบริเวณที่ต้องการ จะทำการเปลี่ยนค่า pixel นั้นในภาพ GrayScale เป็น 0
หลักการปรับภาพแบบ Autocontrast คือ การลดสเกลของcontrastมาในจุดที่เห็นแสงสีของภาพชัดเจนที่สุด โดยจะเลือกของที่มีค่าhistogramในปริมาณสูงๆ เนื่องจากที่จุดนั้นจะมีค่าของสีมากกว่าบริเวณอื่นๆของภาพ และขยับขอบซ้าย-ขวาของสเกลมา จึงได้สเกลcontrastที่เล็กลง
$$ \begin{equation} s = \frac{-cos(r\pi) + 1}{2} \end{equation} $$ เมื่อ \(s,r\) อยู่ในช่วง \([0,1]\)
หลักการปรับภาพแบบ Histogram equalization คือ การปรับ contrast ของภาพด้วยการเปลี่ยนแปลงค่าของ pixel โดยจะใช้วิธี ฟังช์ชั่นการกระจายสะสม ในการทำให้ภาพเกิดความสมดุลและ ภาพมี dynamic สำหรับภาพ หลังจากการทำ equalization ซึ่งวิธีการนี้มีทั้งข้อดีและข้อเสีย โดยข้อดีของวิธีการนี้คือ การปรับภาพให้ชัดเจนมากขึ้นและทำให้ภาพมีความสมดุลมีนความลึกของภาพ ส่วนข้อเสียนั้น การปรับภาพวิธีการนี้ จะทำให้ pixel ผิดแปลกไปจากเดิมในบางกรณี ยกตัวอย่างเช่นการเกิดภาพขอบดำ
$$ \begin{equation} \begin{split} s_k& = T(r_k)\\ & = (L-1) \sum^k_{j=0}{p_r(r_k)}\\ & = \frac{(L-1)}{N} \sum^k_{j=0}{n_j} \quad k = 0,1,2,...,L-1 \end{split} \end{equation} $$ เมื่อ \(n_j\) เป็นจำนวน pixel ที่ intentsity level j และ N เป็นจำนวน pixel ทั้งหมด
เรียงจาก
จากการศึกษาเรื่องเทคนิคการปรับ contrast โดยวิธี poiont operation นี้ ในบางเทคนิคอาจจะต้องมีการพัฒนาต่อไปเช่น การทำ Thresholding นั้นอาจต้องมีการปรับปรุงให้สามารถ detect หน้าและกำหนด threshold ของภาพได้อัติโนมัติ เพื่อให้ง่ายต่อการใช้งาน
จากการศึกษาวิธีการปรับภาพให้มีความคมชัดด้วยเทคนิคด้าน point operation ซึ่งแต่ละเทคนิคใช้หลักการของ Histrogram ที่ได้ทำการศึกษามาก่อนหน้านำมาใช้หลักการทางคณิตศาสตร์ในการสร้างภาพใหม่ หลักการนี้สามารถนำไปพัฒนาและต่อยอดได้ในเทคโนโลยีใหม่ที่นำ image processing มาใช้
[1] Gonzalez, R.C. and Woods, R.E. [2002]. Digital Image Processing, 2nd ed., Prentice Hall, Upper Saddle River, NJ.
[2] Hanselman, D. and Littlefield, B.R. [2001]. Mastering MATLAB 6, Prentice Hall, Upper Saddle River, NJ.
[3] Image Processing Toolbox, User Guide, Version 4. [2003], The MathWorks, Inc., Natick, MA.
[4] Using MATLAB, Versoin 6.5 [2002], The MathWorks, Inc., Natick, MA.