Point Operation

การศึกษาการทำ Point operation ใน Image processing

Objective

  1. เพื่อปรับค่า Brightness ของภาพโดยผ่าน histogram
  2. เพื่อศึกษาการทำ Inverting image
  3. เพื่อศึกษาการทำ Thresholding
  4. เพื่อศึกษาการทำ Autocontrast
  5. เพื่อศึกษาการทำ Histogram equalization

Background

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} $$

ภาพแสดงตำแหน่ง f(x,y) บนแกน


Medthods

  1. ปรับค่า Brightness ของภาพ

    หลักการของการปรับ 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 จำนวนมาก

    ภาพแสดงการเปลี่ยนแปลงแบบโดยใช้การบวกขึ้นทีละ 100 จากต้นฉบับ (บน) ถึง +200 (ล่าง)
    ภาพแสดงการเปลี่ยนแปลงแบบโดยใช้การคูณขึ้นทีละ 100 จากต้นฉบับ (บน) ถึง *10000 (ล่าง)

  2. การทำ Inverting Image

    อธิบายหลักการทำ 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)

    ภาพบนซ้ายแสดง Original image และถัดไปด้านขวาเป็น Histrogram ของ Original image ส่วนภาพด้านล่างซ้ายแสดง Inverting Image และล่างขวาเป็น Histrogram ของ Inverting image

  3. การทำ Thresholding

    อธิบายหลักการทำ 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

    ภาพบนแสดง Original image และด้านล่างเป็นภาพจากการทำ Thresholding
    ภาพบนแสดง Original image และด้านล่างเป็นภาพจากการทำ Thresholding

  4. การทำ AutoContrast

    หลักการปรับภาพแบบ Autocontrast คือ การลดสเกลของcontrastมาในจุดที่เห็นแสงสีของภาพชัดเจนที่สุด โดยจะเลือกของที่มีค่าhistogramในปริมาณสูงๆ เนื่องจากที่จุดนั้นจะมีค่าของสีมากกว่าบริเวณอื่นๆของภาพ และขยับขอบซ้าย-ขวาของสเกลมา จึงได้สเกลcontrastที่เล็กลง

    $$ \begin{equation} s = \frac{-cos(r\pi) + 1}{2} \end{equation} $$ เมื่อ \(s,r\) อยู่ในช่วง \([0,1]\)

    ภาพบนซ้ายแสดง Original image และถัดไปด้านขวาเป็น Histrogram ของ Original image ส่วนภาพด้านล่างซ้ายแสดง AutoContransting Image และล่างขวาเป็น Histrogram ของ Inverting image

  5. การทำ Histogram equalization

    หลักการปรับภาพแบบ 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 ทั้งหมด

  6. ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) ภาพแถวที่ 2 แสดงภาพที่ปรับแล้วโดย myhisteq(ซ้าย) และ Histogram (ขวา) เปรียบเทียบกับภาพที่ได้จาก histeq ของ MATLAB (ล่าง)
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) ภาพแถวที่ 2 แสดงภาพที่ปรับแล้วโดย myhisteq(ซ้าย) และ Histogram (ขวา) เปรียบเทียบกับภาพที่ได้จาก histeq ของ MATLAB (ล่าง)

Results

  1. LSM

    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังจากทำ autocontrast (ล่าง)
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังจากการปรับเพิ่มความส่วาง (ล่าง)
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังการ Invert
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังจากทำ Thresholding
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังจากทำ Histogram Equalization จาก myhisteq (แถวที่สอง) และจาก histeq ของ MATLAB (ล่าง)

  2. DICOM

    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังจากทำ autocontrast (ล่าง)
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังจากการปรับเพิ่มความส่วาง (ล่าง)
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังการ Invert
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังจากทำ Thresholding
    ภาพบนสุดแสดง Original image (ซ้าย) และ Histrogram (ขวา) เปรียบเทียบกับภาพหลังจากทำ Histogram Equalization จาก myhisteq (แถวที่สอง) และจาก histeq ของ MATLAB (ล่าง)

  3. Point Operation บน AVI Video

    เรียงจาก

    • Brightness แบบใช้การบวก
    • Brightness แบบคูณ
    • Invert
    • Threshold
    • Autocontrast
    • Histogram Equalization


Discussion

จากการศึกษาเรื่องเทคนิคการปรับ contrast โดยวิธี poiont operation นี้ ในบางเทคนิคอาจจะต้องมีการพัฒนาต่อไปเช่น การทำ Thresholding นั้นอาจต้องมีการปรับปรุงให้สามารถ detect หน้าและกำหนด threshold ของภาพได้อัติโนมัติ เพื่อให้ง่ายต่อการใช้งาน


Conclusion and Future Study

จากการศึกษาวิธีการปรับภาพให้มีความคมชัดด้วยเทคนิคด้าน point operation ซึ่งแต่ละเทคนิคใช้หลักการของ Histrogram ที่ได้ทำการศึกษามาก่อนหน้านำมาใช้หลักการทางคณิตศาสตร์ในการสร้างภาพใหม่ หลักการนี้สามารถนำไปพัฒนาและต่อยอดได้ในเทคโนโลยีใหม่ที่นำ image processing มาใช้


Q&A

Question 1:
การทำ Image Improvement สามารถแบ่งออกเป็นกี่ประเภท อะไรบ้าง จงอธิบาย
Answer:
  1. Image Enhanncement - เป็นการปรับภาพเพื่อให้เห็นความแตกต่างของรายละเอียดของภาพชัดเจนขึ้น
  2. Image Restoration - การปรับภาพโดยการกู้ภาพเพื่อให้เห็นรายละเอียดในภาพได้ชัดเจนยิ่งขึ้น เช่น การปรับภาพเบลอ และการปรับภาพที่บิดเพี้ยนเชิงเรขาคณิต

Question 2:
การทำ Image Processing ขั้นพื้นฐาน สามารถแบ่งออกได้เป็นกี่ประเภทใหญ่ๆ อะไรบ้าง จงอธิบาย
Answer:
  1. Spartial-domain technique โดยแบ่งเป็น Point operation และ Local operation
  2. Frequency-domain technique โดยแบ่งเป็น Low pass filter และ High pass

Question 3:
Local operation คืออะไร จงอธิบาย
Answer:
เป็นการนำข้อมูลข้างเคียงของจุดที่สนใจมาพิจารณา โดยใช้หลักการ convolution mask หรือเป็นการใช้ template, window หรือ filter มา convolute กับภาพ มีประโยชน์ในการทำ blurring, sharpening, embossing, หรือ edge-detection

Question 4:
ถ้าเราต้องการถ่ายภาพลูกสนุกเกอร์ที่อยู่ที่มุมของโต้ะสนุกเกอร์ แต่ติดปัญหาเรื่องแสง หลังจากถ่ายภาพมาแล้ว ทำให้ภาพไม่คมชัด เราจะใช้วิธีไหนในการปรับ contrast ให้ได้ภาพที่คมชัดขึ้น
Answer:
เราควรใช้ histogram equalization และ Brightness ในการปรับแสงของภาพและทำให้ภาพเกิดความลึกของภาพทำให้ภาพดูสมจิงมากยิ่งขึ้น

References

[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.