Example #1
0
int MainWindow::generateKernel() {
    // Fill List with options
    QStringList items;
    items << tr("Gauss") << tr("Kirsch (rotating)");
    items << tr("Laplacian of the Gaussian (5x5)");
    items << tr("Prewitt 1 (rotating)") << tr("Prewitt 2 (rotating)");
    items << tr("Sobel (rotating)") << tr("other");

    // ask user
    bool ok;
    QString item = QInputDialog::getItem(this, tr("QInputDialog::getItem()"),
					 tr("Season:"), items, 0, false, &ok);
    if (!ok || item.isEmpty()){
	return -1;
    }
    statusBar()->showMessage("choosen " + item);

    // interpret data
    switch(items.indexOf(item)) {
    case 0: //Gauss
	return kernelGauss();
	break;
    case 1: //Kirsch
	return kernelKirsch();
	break;
    case 2: //Laplace
	return kernelLaplace();
	break;
    case 3: //Prewitt 1
	return kernelPrewitt1();
	break;
    case 4: //Prewitt 2
	return kernelPrewitt2();
	break;
    case 5: //Sobel
	return kernelSobel();
	break;
    case 6: //other
	return kernelOther();
	break;
    default:
	return -1;
    }
    return 0;
}
Example #2
0
cv::Mat LoGFilter::process(cv::Mat &a_image) {
  cv::Mat result;
  
  // Allocate if necessary
  result.create(a_image.size(), a_image.type());
  
  // Constroi kernel Gauss; todas entradas = 1/16
  cv::Mat kernelGauss(3, 3, CV_32F, cv::Scalar(0.0625));
  
  // Define matriz do filtro de Gauss
  kernelGauss.at<float>(0, 1) = 0.125;
  kernelGauss.at<float>(1, 0) = 0.125;
  kernelGauss.at<float>(1, 1) = 0.25;
  kernelGauss.at<float>(1, 2) = 0.125;
  kernelGauss.at<float>(2, 1) = 0.125;
    
  // Convolve imagem original com filtro de Gauss
  cv::filter2D(a_image, result, a_image.depth(), kernelGauss);

  // Constroi kernel Laplace; todas entradas = 0
  cv::Mat kernelLaplace(3, 3, CV_32F, cv::Scalar(0.0));
  
  // Define matriz do filtro de Laplace
  kernelLaplace.at<float>(0, 1) = -1.0;
  kernelLaplace.at<float>(1, 0) = -1.0;
  kernelLaplace.at<float>(1, 1) = +4.0;
  kernelLaplace.at<float>(1, 2) = -1.0;
  kernelLaplace.at<float>(2, 1) = -1.0;
  
  /*
   // versao negativa
   float matrizLaplace [] = {
   0f,  1f,  0f,
   1f, -4f,  1f,
   0f,  1f,  0f
   };
   */
  
  // Convolve imagem Gauss com filtro de Laplace
  cv::filter2D(result, result, a_image.depth(), kernelLaplace);
    
  return result;
}