วันพฤหัสบดีที่ 20 เมษายน พ.ศ. 2560

FD Math การแปลงภาพโดยการประมวผลทางคณิตศาตร์ ระหว่างภาพ 2 ภาพ

FD Math…


เป็นคำสั่งเกี่ยวกับ correlates, convolves, deconvolves ของภาพ 2 ภาพ

It does this by converting Image1 and Image2 to the frequency
domain, performing conjugate multiplication or
division, then converting the result back to the space domain.
These three operations in the frequency domain are
equivalent to correlation, convolution and deconvolution in
the space domain.


วิธีการ คือการแปลงภาพ Image1 และ Image2 ให้อยู่ในรูปแบบของ frequency domain เพื่อประสิทธิภาพของการใช้การประมวลผล conjugate, multiplicaiton หรือ division  หลังจากนั้นก็จะแปลงผลลัพธ์กลับเป็น space domain การใช้ operation เหล่านี้ก็คือการประมวลผลแบบ frequency domain ซึ่งเท่ากับการประมวลผล correlation, convolution และ deconvolution ในโดเมนแบบเดิม (space domain)

สามารถดูตัวอย่างได้จากมาโคร (Macro) ดังต่อไปนี้
http://imagej.nih.gov/ij/macros/DeconvolutionDemo.txt  แสดงตัวอย่างได้ดังนี้

// This macro demonstrates the use of frequency domain convolution
// and deconvolution. It opens a samples image, creates a point spread
// function (PSF), adds some noise (*), blurs the image by convolving it
// with the PSF, then de-blurs it by deconvolving it with the same PSF.
//
// * Why add noise? - Robert Dougherty
// Regarding adding noise to the PSF, deconvolution works by
// dividing by the PSF in the frequency domain.  A Gaussian
// function is very smooth, so its Fourier, (um, Hartley)
// components decrease rapildy as the frequency increases.  (A
// Gaussian is special in that its transform is also a
// Gaussian.)  The highest frequency components are nearly zero.
// When FD Math divides by these nearly-zero components, noise
// amplification occurs.  The noise added to the PSF has more
// or less uniform spectral content, so the high frequency
// components of the modified PSF are no longer near zero,
// unless it is an unlikely accident.
  if (!isOpen("bridge.gif")) run("Bridge (174K)");
  if (isOpen("PSF")) {selectImage("PSF"); close();}
  if (isOpen("Blurred")) {selectImage("Blurred"); close();}
  if (isOpen("Deblurred")) {selectImage("Deblurred"); close();}
  newImage("PSF", "8-bit black", 512, 512, 1);
  makeOval(246, 246, 20, 20);
  setColor(255);
  fill();
  run("Select None");
  run("Gaussian Blur...", "radius=8");
  run("Add Specified Noise...", "standard=2");
  run("FD Math...", "image1=bridge.gif operation=Convolve image2=PSF result=Blurred do");
  run("FD Math...", "image1=Blurred operation=Deconvolve image2=PSF result=Deblurred do”);

และ http://imagej.nih.gov/ij/macros/MotionBlurRemoval.txt  แสดงคำสั่งได้ดังนี้
  // Demonstrates motion blur removal using deconvolution.
  // For more information, do a Google search for "FFT motion blur".
  // open the "bridge" sample image
  run("Bridge (174K)");
  // Create a line-shaped point source function
  newImage("PSF", "8-bit black", 512, 512, 1);
  setForegroundColor(255, 255, 255);
  makeLine(251, 251, 261, 261);
  run("Draw");
  run("Select None");
  // Convolve Bridge with PSF to generate motion blurred image
  run("FD Math...", "image1=bridge.gif operation=Convolve image2=PSF result='Motion Blurred' do");
  // Deconvolve motion blurred image with PSF to generate deblurred image
  run("FD Math...", "image1='Motion Blurred' operation=Deconvolve image2=PSF result=Deblurred do");

ตัวอย่าง




ภาพ 2 ภาพที่จะนำมาประมวลผล ต้องมีขนาดเท่ากัน


การเลือกเมนู


ผลลัพธ์

Operation = Correlate



Operation = Convolve




Operation = Deconvolve



ไม่มีความคิดเห็น:

แสดงความคิดเห็น