通常需要锐化的图像,经过锐化后,我们发现轮廓会变得清晰,但是轮廓内部或外部就会出现噪声,具体来说,就是锐化需要处理的多数是轮廓部分,而不需要锐化的内部和外部反而因为锐化产生噪音。解决噪声的办法则是通过复制锐化前的原图层,在锐化后将其放置在被锐化的图层之上,选择适当的透明度,并且使用橡皮擦(画笔采用模糊圆形笔尖)擦掉轮廓,使下层经过锐化的轮廓明晰显露出来,这样,既有明晰的轮廓,又有原图尚未产生噪声的大部分主体,应可满足你的需求。
在Photoshop的锐化设置中可以将模糊人物相片变清晰,具体 *** 作请参照以下步骤。
1、在电脑上打开PS软件,然后打开目标模糊。打开之后在图层里复制一层,然后在滤镜里找到锐化选项。
2、点击锐化选项之后,在右侧会出现一个选项框,在其下拉选项列表里找到锐化边缘选项进行点击。
3、点击锐化边缘选项之后再在滤镜里找到查找边缘选项,然后进行点击。
4、在查找边缘选项对话框中找到不透明度选项栏,然后输入7%。
5、设置好之后按下Ctrl+E键将其合并,然后在滤镜里找到USM锐化选项,点击USM锐化之后在d出的对话框内按下图设置参数。
6、设置好参数之后点击确定即可,这样 *** 作就能用Photoshop将模糊人物相片变清晰。
直接给你demo
#include <opencv2/core/corehpp>#include <opencv2/highgui/highguihpp>
#include <opencv2/imgproc/imgprochpp>
#include <iostream>
//输入形参为pass by conference-const,保证输入的图像不会被修改,并且为传递引用
void sharpenImage0(const cv::Mat &image, cv::Mat &result)
{
//为输出图像分配内存
resultcreate(imagesize(),imagetype());
/滤波核为拉普拉斯核3x3:
0 -1 0
-1 5 -1
0 -1 0
/
for(int j= 1; j<imagerows-1; ++j)
{
const uchar previous = imageptr<const uchar>(j-1);
const uchar current = imageptr<const uchar>(j);
const uchar next = imageptr<const uchar>(j+1);
uchar output = resultptr<uchar>(j);
for(int i= 1; i<imagecols-1; ++i)
{
output++ = cv::saturate_cast<uchar>(5current[i]-previous[i]-next[i]-current[i-1]-current[i+1]); //saturate_cast<uchar>()保证结果在uchar范围内
}
}
resultrow(0)setTo(cv::Scalar(0));
resultrow(resultrows-1)setTo(cv::Scalar(0));
resultcol(0)setTo(cv::Scalar(0));
resultcol(resultcols-1)setTo(cv::Scalar(0));
}
void sharpenImage1(const cv::Mat &image, cv::Mat &result)
{
//创建并初始化滤波模板
cv::Mat kernel(3,3,CV_32F,cv::Scalar(0));
kernelat<float>(1,1) = 50;
kernelat<float>(0,1) = -10;
kernelat<float>(1,0) = -10;
kernelat<float>(1,2) = -10;
kernelat<float>(2,1) = -10;
resultcreate(imagesize(),imagetype());
//对图像进行滤波
cv::filter2D(image,result,imagedepth(),kernel);
}
int main(int argc, char argv[])
{
cv::Mat image = cv::imread("/boldtjpg");
cv::Mat image_gray;
image_graycreate(imagesize(),imagetype());
if(!imagedata)
return -1;
if(imagechannels() == 3)
cv::cvtColor(image,image_gray,CV_RGB2GRAY);
cv::Mat result;
resultcreate(image_graysize(),image_graytype());
double time_ = static_cast<double>(cv::getTickCount());
sharpenImage0(image_gray,result);
time_ = 1000(static_cast<double>(cv::getTickCount())-time_)/cv::getTickFrequency();
std::cout<<"time = "<<time_<<"ms"<<std::endl;
cv::namedWindow("Image 1");
cv::imshow("Image 1",result);
cv::Mat result1;
result1create(image_graysize(),image_graytype());
time_ = static_cast<double>(cv::getTickCount());
sharpenImage1(image_gray,result1);
time_ = 1000static_cast<double>(cv::getTickCount()-time_)/cv::getTickFrequency();
std::cout<<"time = "<<time_<<"ms"<<std::endl;
cv::namedWindow("Image 2");
cv::imshow("Image 2",result1);
cv::waitKey();
return 0;
}
有几种可能的“锐化”方式“:
根据直方图,构造灰度映射。
高频滤波后再与原图叠加。
自己随便百度一下都有很多代码。
打开PS软件按AIt+ctrl+shift+O导入,按ctrl+j复制一层。点滤镜、锐化、智能锐化,调整清晰度,确定。如果还不够清晰,点滤镜、锐化、进一步锐化。点图像、调整、亮度/对比度、自动、确定就可以了。按ctrl+shift+S保存,保存为jpg格式,确定,最优、确定就可以了!
以上就是关于请简述如何在实现图像锐化的同时,有效抑制噪声的增加全部的内容,包括:请简述如何在实现图像锐化的同时,有效抑制噪声的增加、如何用Photoshop将模糊人物相片变清晰、opencv 怎么对图像进行锐化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)