请简述如何在实现图像锐化的同时,有效抑制噪声的增加

请简述如何在实现图像锐化的同时,有效抑制噪声的增加,第1张

通常需要锐化的图像,经过锐化后,我们发现轮廓会变得清晰,但是轮廓内部或外部就会出现噪声,具体来说,就是锐化需要处理的多数是轮廓部分,而不需要锐化的内部和外部反而因为锐化产生噪音。解决噪声的办法则是通过复制锐化前的原图层,在锐化后将其放置在被锐化的图层之上,选择适当的透明度,并且使用橡皮擦(画笔采用模糊圆形笔尖)擦掉轮廓,使下层经过锐化的轮廓明晰显露出来,这样,既有明晰的轮廓,又有原图尚未产生噪声的大部分主体,应可满足你的需求。

在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 怎么对图像进行锐化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9796008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存