作用:
显著性图像是通过计算图像中每个像素的显著性值来生成的一幅图像。它可以帮助人类更快速地理解和处理图像信息,通过突出显示图像中最重要的部分,减少人类认知和决策的负担。在计算机视觉领域,显著性图像也被广泛应用于图像分割、目标识别、图像检索等任务中,可以提高算法的准确性和效率。
目的:
根据图像的内容和特征,自动地确定图像中最具有“显著性”的部分。这些“显著性”部分可以是图像中的物体、人脸、文字、颜色等等。
- 显著性图像处理通常包含以下步骤:
- 图像预处理:包括图像去噪、颜色空间转换等操作,以便更好地提取图像特征。
- 特征提取:通过计算图像中的颜色、纹理、边缘等特征,来确定图像中最具有“显著性”的部分。
- 显著性计算:根据得到的图像特征,计算每个像素的显著性分数,以确定图像中哪些部分最具有“显著性”。
- 显著性图像生成:将计算得到的显著性分数应用于原始图像,生成一张显著性图像,其中最显著的部分通常会被突出显示。
效果:
代码:
#include <QFileDialog>
#include <opencv2/opencv.hpp>
#include <opencv2/saliency/saliencySpecializedClasses.hpp>
void MainWindow::on_openButton_clicked() {
QString filename = QFileDialog::getOpenFileName(this, tr("Open Image"), ".", tr("Image Files (*.png *.jpg *.bmp)"));
if (filename.isEmpty()) {
return;
}
Mat image = imread(filename.toStdString());
if (image.empty()) {
return;
}
Mat saliencyMap;
cv::saliency::StaticSaliencyFineGrained saliencyDetector = cv::saliency::StaticSaliencyFineGrained();
saliencyDetector.computeSaliency(image, saliencyMap);
normalize(saliencyMap, saliencyMap, 0, 255, NORM_MINMAX);
saliencyMap.convertTo(saliencyMap, CV_8U);
QImage qimage(saliencyMap.data, saliencyMap.cols, saliencyMap.rows, saliencyMap.step, QImage::Format_Grayscale8);
ui->label->setPixmap(QPixmap::fromImage(qimage));
ui->label->resize(qimage.size());
ui->label->show();
}