Monday, March 21, 2011

ImageJ 5: Contrast and Brightness

ในหัวข้อนี้เราจะลองปรับค่า contrast และ brightness ของภาพ

contrast คือ ความแตกต่างของเฉดสี เช่น
contrast สูง คือ เฉดสีต่างกันมาก

contrast ต่ำ คือ เฉดสีใกล้เคียงกัน

brightness คือ ความมืดหรือความสว่างของภาพ เช่น
brightness สูง คือ ภาพสว่าง

brightness ต่ำ คือ ภาพมืด

นั่นคือ
การปรับ contrast คือ การคูณหรือหารค่าพิกเซล
การปรับ brightness คือ การบวกหรือลบค่าพิกเซล

ลองพิจารณารหัสโปรแกรมในการปรับค่า contrast ดังนี้
//Plugin to change contrast
import ij.IJ;
import ij.ImagePlus;
import ij.plugin.filter.PlugInFilter;
import ij.process.ImageProcessor;

public class My_Contrast implements PlugInFilter
{
 public int setup(String arg, ImagePlus imp)
 {
  return DOES_8G;  //accept only 8-bit grayscale image
 }

 public void run(ImageProcessor ip)
 {
  double ad = IJ.getNumber("Adjust percent of contrast",50);  
  if(ad==IJ.CANCELED) //if click cancel
   return;

  int MN = ip.getPixelCount();
  for(int p=0;p<MN;p++)
  {
   //contrast
   int v = (int)(ip.get(p)*(1+ad/100));
   if(v>255) //clamp max value
    v = 255;
   if(v<0)  //clamp min value
    v = 0;
   ip.set(p,v);
  }
 }
}

ส่วนการปรับค่า brightness ก็สามารถทำได้ดังนี้
 public void run(ImageProcessor ip)
 {  
  double ad = IJ.getNumber("Adjust value of brigtness",50);
  if(ad==IJ.CANCELED) //if click cancel
   return;

  int MN = ip.getPixelCount();
  for(int p=0;p<MN;p++)
  {
   //brightness
   int v = (int) (ip.get(p) + ad);
   if(v>255) //clamp max value
    v = 255;
   if(v<0)  //clamp min value
    v = 0;
   ip.set(p,v);
  }
 }

No comments:

Post a Comment