-
大小: 8.02MB文件类型: .zip金币: 1下载: 0 次发布日期: 2023-11-03
- 语言: C/C++
- 标签: SeamCarving 图像拉伸
资源简介
分别用了基于梯度图和Saliency算法的显著度图计算方法,以水平和垂直两种方式简单地压缩图片。实现了有关动态规划算法
代码片段和文件信息
#include“highgui.h“
#include“cv.h“
#include“stdio.h“
#include“Saliency.h“
using namespace cv;
#define delNUM 50
//锐化滤波得到显著图
Mat getSrcEnergy(Mat image){
Mat image_gray;
//均值滤波
Mat mask1 = (Mat_(3 3) << 0 0 0 0 1 -1 0 0 0);
Mat mask2 = (Mat_(3 3) << 0 0 0 0 1 0 0 -1 0);
Mat result(image.rows image.cols CV_32F Scalar(0));
Mat result1(image.rows image.cols CV_32F Scalar(0));
Mat result2(image.rows image.cols CV_32F Scalar(0));
cvtColor(image image_gray CV_BGR2GRAY);
filter2D(image_gray result1 result1.depth() mask1);
filter2D(image_gray result2 result2.depth() mask2);
add(abs(result1) abs(result2) result);
return result;
}
//Saliency算法得到显著图
Mat getEnergy(Mat image){
Saliency sal;
vector salmap(0);
vector inputImg;
IplImage imgTmp = image;
IplImage* img = cvCloneImage(&imgTmp);
for (int h = 0; h < img->height; h++){
unsigned char*p = (unsigned char*)img->imageData + h*img->widthStep;
for (int w = 0; w < img->width; w++){
unsigned int t = 0;
t += *p++;
t <<= 8;
t += *p++;
t <<= 8;
t += *p++;
inputImg.push_back(t);
}
}
sal.GetSaliencyMap(inputImg img->width img->height salmap);
int index = 0;
IplImage* imageOut = cvCreateImage(cvGetSize(img) IPL_DEPTH_64F 1);
IplImage* ori = cvCreateImage(cvGetSize(img) IPL_DEPTH_32F 1);
for (int h = 0; h < imageOut->height; h++){
double *p = (double*)(imageOut->imageData + h*imageOut->widthStep);
for (int w = 0; w < imageOut->width; w++){
*p++ = salmap[index++];
}
}
cvConvertScale(imageOut ori);
Mat imgMat(ori 1);
cvReleaseImage(&img);
cvReleaseImage(&imageOut);
return imgMat;
}
//累计能量,范围为3个
void calculateEnergy3(Mat imageMat &EnergyMatMat &trace){
image.copyTo(EnergyMat);
for (int i = 1; i < image.rows; i++){
//第一列的能量累计
if (EnergyMat.at(i - 1 0) <= EnergyMat.at(i - 1 1)){
EnergyMat.at(i 0) = image.at(i 0) + EnergyMat.at(i - 1 0);
trace.at(i 0) = 0; //正上方的是0
}
else{
EnergyMat.at(i 0) = image.at(i 0) + EnergyMat.at(i - 1 1);
trace.at(i 0) = 1; //右上方的是1
}
//中间列的能量累计
for (int j = 1; j < image.cols - 1; j++){
float en[3] min;
int index = -1;
en[0] = EnergyMat.at(i - 1 j - 1);
en[1] = EnergyMat.at(i - 1 j);
en[2] = EnergyMat.at(i - 1 j + 1);
min = en[0];
for (int k = 1; k < 3; k++){
if (en[k] < min){
min = en[k];
index = k - 1;
}
}
EnergyMat.at(i j) = image.at(i j) + EnergyMat.at(i - 1 j + index);
trace.at(i j) = index;
}
//最后一列的能量累计
if (EnergyMat.at(i - 1 image.cols - 1) <= EnergyMat.at(i - 1 image.cols - 2)){
EnergyMat.at(i image.cols - 1) = image.at(i image.cols - 1) + EnergyMat.at(i - 1 image.cols - 1);
tra
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-11-14 20:09 final\
目录 0 2016-10-30 16:29 final\Debug\
文件 112640 2016-10-30 08:29 final\Debug\final.exe
文件 576920 2016-10-30 08:29 final\Debug\final.ilk
文件 1765376 2016-10-30 08:29 final\Debug\final.pdb
目录 0 2016-11-04 10:21 final\final\
文件 15466496 2016-11-14 20:09 final\final.sdf
文件 961 2016-10-30 08:25 final\final.sln
文件 25088 2016-11-14 20:09 final\final.v12.suo
文件 52224 2016-10-30 10:12 final\final\1.jpg
文件 75714 2016-10-30 15:10 final\final\2.jpg
文件 92352 2016-10-30 15:09 final\final\3.jpg
文件 258009 2016-10-30 15:10 final\final\4.jpg
文件 204622 2016-10-30 15:10 final\final\5.jpg
文件 63984 2016-10-30 15:10 final\final\6.jpg
文件 95538 2016-10-30 15:10 final\final\7.jpg
文件 115855 2016-10-30 15:10 final\final\8.jpg
文件 70384 2016-10-30 15:10 final\final\9.jpg
目录 0 2016-10-30 16:29 final\final\Debug\
文件 2173 2016-10-30 08:29 final\final\Debug\final.log
目录 0 2016-10-30 16:29 final\final\Debug\final.tlog\
文件 616 2016-10-30 08:29 final\final\Debug\final.tlog\cl.command.1.tlog
文件 12968 2016-10-30 08:29 final\final\Debug\final.tlog\CL.read.1.tlog
文件 412 2016-10-30 08:29 final\final\Debug\final.tlog\CL.write.1.tlog
文件 171 2016-10-30 08:29 final\final\Debug\final.tlog\final.lastbuildstate
文件 2796 2016-10-30 08:29 final\final\Debug\final.tlog\li
文件 6484 2016-10-30 08:29 final\final\Debug\final.tlog\li
文件 390 2016-10-30 08:29 final\final\Debug\final.tlog\li
文件 417697 2016-10-30 08:29 final\final\Debug\main.obj
文件 617472 2016-10-30 08:29 final\final\Debug\vc120.idb
文件 1257472 2016-10-30 08:29 final\final\Debug\vc120.pdb
............此处省略26个文件信息
评论
共有 条评论