Beispiel #1
0
void MainWindow::getPowerSpectrumUsingDCT()
{
	if (activeImageDisplay())
	{
		QImage image = activeImageDisplay()->getImage();
		QString curFile = activeImageDisplay()->getCurFileWithStrippedName();

		ImageOperations imageOperations(image);

		if (image.allGray())
		{
			QImage RImage = imageOperations.DCTPowerSpectrum(Red);

			if (RImage.height() == 0)
				return;

			ImageDisplay *redImageDisplay = createImageDisplay(workspace->height(), workspace->width());
			redImageDisplay->newFile("DCT Gray power spectrum of " + curFile);
			redImageDisplay->setImage(RImage);
			redImageDisplay->show();
		}
		else
		{
			QImage RImage = imageOperations.DCTPowerSpectrum(Red);
			QImage GImage = imageOperations.DCTPowerSpectrum(Green);
			QImage BImage = imageOperations.DCTPowerSpectrum(Blue);

			if (RImage.height() == 0 || GImage.height() == 0 || BImage.height() == 0)
				return;

			ImageDisplay *redImageDisplay = createImageDisplay(workspace->height(), workspace->width());
			redImageDisplay->newFile("DCT Red power spectrum of " + curFile);
			redImageDisplay->setImage(RImage);
			redImageDisplay->show();

			ImageDisplay *greenImageDisplay = createImageDisplay(workspace->height(),workspace->width());
			greenImageDisplay->newFile("DCT Green power spectrum of " + curFile);
			greenImageDisplay->setImage(GImage);
			greenImageDisplay->show();

			ImageDisplay *blueImageDisplay = createImageDisplay(workspace->height(), workspace->width());
			blueImageDisplay->newFile("DCT Blue power spectrum of " + curFile);
			blueImageDisplay->setImage(BImage);
			blueImageDisplay->show();
		}
	}
}