图像锐化-拉普拉斯算子

2024-01-06 07:32

本文主要是介绍图像锐化-拉普拉斯算子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


转自:http://blog.csdn.net/devil_pull/article/details/17246855

图像锐化(拉普拉斯算子):

将一副图像减去经过拉普拉斯滤波滞后的图像,这幅图像的边缘部分将得到放大,计算公式如下:

滤波后的像素值=5*中-左-右-上-下:

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * @file 2_6.cpp 
  3.  * @Synopsis  图像锐化,拉普拉斯算子 
  4.  * @author weih.cao 
  5.  * @version 1.0.0.0 
  6.  * @date 2013-12-10 
  7.  */  
  8. #include<opencv2/core/core.hpp>  
  9. #include<opencv2/imgproc/imgproc.hpp>  
  10. #include<opencv2/highgui/highgui.hpp>  
  11.   
  12. /* --------------------------------------------------------------------------*/  
  13. /** 
  14.  * @Synopsis  sharpen  
  15.  * 
  16.  * @Param image 
  17.  * @Param result 
  18.  */  
  19. /* ----------------------------------------------------------------------------*/  
  20. void sharpen(const cv::Mat image, cv::Mat &result)  
  21. {  
  22.     result.create(image.size(), image.type());  
  23.     for(int j = 1; j < image.rows-1; j++)  
  24.     {  
  25.         const uchar* previous = image.ptr<const uchar>(j-1);  
  26.         const uchar* current  = image.ptr<const uchar>(j);  
  27.         const uchar* next     = image.ptr<const uchar>(j+1);  
  28.   
  29.         uchar* output = result.ptr<uchar>(j);  
  30.         for(int i = 1; i < image.cols-1; i++)  
  31.         {  
  32.             //sharpened_pixel = 5*current-left-right-up-down;  
  33.             //cv::saturate_cast用以对计算结果进行截断(0-255)  
  34.             *output++ = cv::saturate_cast<uchar>(  
  35.                     5*current[i]-current[i-1]  
  36.                     -current[i+1]-previous[i]-next[i]);  
  37.         }  
  38.     }  
  39.     result.row(0).setTo(cv::Scalar(0));  
  40.     result.row(result.rows-1).setTo(cv::Scalar(0));  
  41.     result.col(0).setTo(cv::Scalar(0));  
  42.     result.col(result.cols-1).setTo(cv::Scalar(0));  
  43. }  
  44.   
  45. int main(int argc,char** argv)  
  46. {  
  47.     cv::Mat img = cv::imread(argc == 2 ? argv[1] : "lena.jpg");  
  48.     cv::cvtColor(img,img,CV_BGR2GRAY);  
  49.     cv::Mat result;  
  50.     result.create(img.size(), img.type());  
  51.     sharpen(img, result);  
  52.     cv::namedWindow("sharpen");  
  53.     cv::namedWindow("img");  
  54.     cv::imshow("img",img);  
  55.     cv::imshow("sharpen", result);  
  56.     cv::waitKey(0);  
  57. }  

1.cv::saturate_cast被用来对计算结果进行截断,对数值的数学计算常常超出允许的计算范围,解决方案是直接映射到0~255.

2.rowcol方法。返回一个特殊的、仅包含一行或一列的cv::Mat实例。在这个过程中没任何形式的数据拷贝,如果该一维矩阵遭到修改也会相应的修改原始图像。

3.setTo函数将矩阵的所有元素设为指定的值。

[cpp]  view plain copy
在CODE上查看代码片 派生到我的代码片
  1. result.row(0).setTo(cv::Scalar(0));  

将图像的第一行的所有像素设置为0。三通道的爱色图像,需要使用cv::Scalar(a,b,c)来指定像素三个通道的目标值。


效果图:


这篇关于图像锐化-拉普拉斯算子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/575643

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

HalconDotNet中的图像特征与提取详解

文章目录 简介一、边缘特征提取二、角点特征提取三、区域特征提取四、纹理特征提取五、形状特征提取 简介   图像特征提取是图像处理中的一个重要步骤,用于从图像中提取有意义的特征,以便进行进一步的分析和处理。HalconDotNet提供了多种图像特征提取方法,每种方法都有其特定的应用场景和优缺点。 一、边缘特征提取   边缘特征提取是图像处理中最基本的特征提取方法之一,通过检

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

Winfrom中解决图像、文字模糊的方法

1.添加清单 2.将清单中的下面内容取消注释

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。

Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置

图像像素值 图像像素值一般size为3,也就是通道数,分别代表R,G,B,如果只有单一 一个值则表示灰度值,也就是说一张二维图片,当长和宽都为1080时,那么若是灰度图像,图像尺寸为(1080,1080,1)若是RGB图像则为(1080,1080,3), jpg、png图像格式 jpg图像的灰度值范围和RGB范围为[0,255],数值类型为uint8,也就是无符号整数 png图像的灰度值范

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构