123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include "cvfilters.h"
- #include <QFileDialog>
- #include <QString>
- #include <QTextStream>
- #include <QPixmap>
- #include <QImage>
- #include <QLabel>
- #include <iostream>
- #include <QMessageBox>
- #include "dialogselvardog.h"
- #include "dialogselrank.h"
- #include "dialogpercentagenoise.h"
- #include "dialogselgaussiannoise.h"
- #include "dialogabout.h"
- QString filename=NULL;
- QImage filteredImage;
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- QCoreApplication::setApplicationName("Computer Vision @ Beast");
- setWindowTitle("Computer Vision @ Beast");
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- void MainWindow::on_pushButtonOpenImg_clicked()
- {
- filename = QFileDialog::getOpenFileName(this,tr("Choose an Image File"),QDir::currentPath(),"All File (*.*);;Image pgm (*.pgm)");
- if(!filename.isEmpty())
- {
- QImage image(filename);
- ui->labelOrigImg->setPixmap(QPixmap::fromImage(image));
- ui->labelFilteredImg->setText("No Effect Applied");
- ui->labelFilteredImg->setAlignment(Qt::AlignCenter);
- }
- }
- void MainWindow::on_pushButtonApplyFilter_clicked()
- {
- if(filename.isNull())
- {
- QMessageBox msgBox;
- msgBox.setText("No image has been selected!");
- msgBox.setInformativeText("Please select an image by clicking on the \"Open Image\" button...");
- msgBox.setStandardButtons(QMessageBox::Ok);
- msgBox.setDefaultButton(QMessageBox::Ok);
- msgBox.exec();
- }
- else
- {
- QImage image(filename);
- if(!ui->comboBoxFilters->currentText().compare("Box"))
- {
- filteredImage=boxFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Sobel Module"))
- {
- filteredImage=sobelModuleFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Sharpening"))
- {
- filteredImage=sharpeningFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Kirsch"))
- {
- filteredImage=kirschFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Sobel Phase"))
- {
- filteredImage=sobelPhaseFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Roberts Module"))
- {
- filteredImage=robertsModuleFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Roberts Phase"))
- {
- filteredImage=robertsPhaseFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("3/9 Filter"))
- {
- filteredImage=threeNineFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Isotropic Module"))
- {
- filteredImage=isotropicModuleFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Isotropic Phase"))
- {
- filteredImage=isotropicPhaseFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Prewitt Module"))
- {
- filteredImage=prewittModuleFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Prewitt Phase"))
- {
- filteredImage=prewittPhaseFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Gaussian Filter"))
- {
- filteredImage=gaussianFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Median Filter"))
- {
- filteredImage=medianFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Laplacian Filter"))
- {
- filteredImage=laplacianFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Rank Filter"))
- {
- DialogSelRank mDial(this);
- int rankOrder=3;
- mDial.setModal(true);
- if(mDial.exec()==QDialog::Accepted)
- {
- rankOrder=mDial.getRankValue();
- }
- filteredImage=rankFilter(image,rankOrder);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("DoG (Difference of Gaussians)"))
- {
- DialogSelVarDog mDial(this);
- QVector<float> var;
- mDial.setModal(true);
- if(mDial.exec()==QDialog::Accepted)
- {
- var=mDial.getFirstValue();
- }
- filteredImage=DoGFilter(image,var.value(0),var.value(1));
- var.clear();
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Nagao Matsuyama Filter"))
- {
- filteredImage=nagaoFilter(image);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Uniform Noise"))
- {
- DialogPercentageNoise mDial(this);
- int percOfNoise=-1;
- mDial.setModal(true);
- if(percOfNoise==-1)
- {
- percOfNoise=0;
- }
- if(mDial.exec()==QDialog::Accepted)
- {
- percOfNoise=mDial.getPercOfNoise();
- }
- filteredImage=uniformNoise(image,percOfNoise);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Gaussian Noise"))
- {
- DialogSelGaussianNoise mDial(this);
- float mean=0;
- float variance=100;
- mDial.setModal(true);
- if(mDial.exec()==QDialog::Accepted)
- {
- variance=mDial.getGaussianNoiseVariance();
- mean=mDial.getGaussianNoiseMean();
- }
- filteredImage=gaussianNoise(image,mean,variance);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Salt and Pepper Noise"))
- {
- DialogPercentageNoise mDial(this);
- int percOfNoise=-1;
- mDial.setModal(true);
- if(mDial.exec()==QDialog::Accepted)
- {
- percOfNoise=mDial.getPercOfNoise();
- }
- if(percOfNoise==-1)
- {
- percOfNoise=0;
- }
- filteredImage=saltPepperNoise(image,percOfNoise);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else if(!ui->comboBoxFilters->currentText().compare("Impulse Noise"))
- {
- DialogPercentageNoise mDial(this);
- int percOfNoise=-1;
- mDial.setModal(true);
- if(mDial.exec()==QDialog::Accepted)
- {
- percOfNoise=mDial.getPercOfNoise();
- }
- if(percOfNoise==-1)
- {
- percOfNoise=0;
- }
- filteredImage=impulseNoise(image,percOfNoise);
- ui->labelFilteredImg->setPixmap(QPixmap::fromImage(filteredImage));
- }
- else
- {
- QImage nullImage;
- filteredImage=nullImage;
- ui->labelFilteredImg->setText("No Effect Applied");
- ui->labelFilteredImg->setAlignment(Qt::AlignCenter);
- }
- }
- }
- void MainWindow::on_pushButtonSaveImg_clicked()
- {
- QString filenameWritten="";
- if(!filename.compare(""))
- {
- QMessageBox msgBox;
- msgBox.setText("No image was opened");
- msgBox.setStandardButtons(QMessageBox::Ok);
- msgBox.setDefaultButton(QMessageBox::Ok);
- msgBox.exec();
- filenameWritten.clear();
- }
- else if(filteredImage.isNull())
- {
- QMessageBox msgBox;
- msgBox.setText("No effect has been applied");
- msgBox.setInformativeText("Please be sure to apply an effect to an image before saving and to confirm by clicking on the \"Save\" button...");
- msgBox.setStandardButtons(QMessageBox::Ok);
- msgBox.setDefaultButton(QMessageBox::Ok);
- msgBox.exec();
- }
- else if(!ui->labelFilteredImg->text().compare("No Effect Applied"))
- {
- QMessageBox msgBox;
- msgBox.setText("No effect has been applied");
- msgBox.setInformativeText("Please be sure to apply an effect to an image before saving and to confirm by clicking on the \"Save\" button...");
- msgBox.setStandardButtons(QMessageBox::Ok);
- msgBox.setDefaultButton(QMessageBox::Ok);
- msgBox.exec();
- }
- else
- {
- filenameWritten = QFileDialog::getSaveFileName(this,"Save File",QDir::currentPath(),"Image pgm (*.pgm)");
- if(!(filenameWritten.endsWith(".pgm") || filenameWritten.endsWith(".PGM")) && filenameWritten.compare("")!=0)
- {
- filenameWritten=filenameWritten+".pgm";
- }
- if(filteredImage.save(filenameWritten) && filenameWritten.compare("")!=0)
- {
- QMessageBox msgBox;
- msgBox.setText("The filtered image has been saved.");
- msgBox.setStandardButtons(QMessageBox::Ok);
- msgBox.setDefaultButton(QMessageBox::Ok);
- msgBox.exec();
- filenameWritten="";
- }
- else
- {
- QMessageBox msgBox;
- msgBox.setText("No image was saved");
- msgBox.setInformativeText("Please be sure to apply an effect to an image before saving and to confirm by clicking on the \"Save\" button...");
- msgBox.setStandardButtons(QMessageBox::Ok);
- msgBox.setDefaultButton(QMessageBox::Ok);
- msgBox.exec();
- }
- }
- }
- void MainWindow::on_actionAbout_triggered()
- {
- DialogAbout mDial(this);
- mDial.setModal(true);
- mDial.exec();
- }
|