ถ้าเลือกค่า Threshold เป็น 100 ดังนั้น ทุกพิกเซลที่มีค่าน้อยกว่าหรือเท่ากับ 100 ให้มีค่าเป็น 0 (ดำ) นอกนั้นให้มีค่าเป็น 255 (ขาว) เช่น
หลังจากทำ Thresholding
สำหรับ ImageJ มีฟังก์ชันในคลาส ImageProcessor ชื่อ void threshold(int) เพื่อทำหน้าที่นี้
ลองดูตัวอย่างครับ
import ij.IJ; import ij.ImagePlus; import ij.plugin.filter.PlugInFilter; import ij.process.ImageProcessor; public class My_Threshold implements PlugInFilter { public int setup(String arg, ImagePlus imp) { return DOES_8G; //accept only 8-bit grayscale image } public void run(ImageProcessor ip) { int th = (int) IJ.getNumber("Threshold value (0-255)",100); if(th==IJ.CANCELED) //if click cancel return; if((th<0) || (th>255)){ IJ.error("Error","0-255 only"); return; } ip.threshold(th); //thresholding /* int MN = ip.getPixelCount(); for(int p=0;p<MN;p++){ if(ip.get(p)<=th) ip.set(p,0); else ip.set(p,255); } */ } }
คือว่าผมใช้ VC++ อะครับ
ReplyDeleteพอจะทราบไหมครับว่า จะแปลงจาก YCrCb ไปเป็น GRAY ทำยังไงครับ