关于opencv的矩阵掩码的操作其他博客已经讲了很多了,他们基本上都是抄opencv中文社区的,本文跟他们的区别是,这里只具体解释公式
I(i,j) = 5*I(i,j) - [ I(i-1,j) + I(i+1,j) + I(i,j-1) + I(i,j+1)],也就是本人对这个公式的理解。

引用opencv中文社区的一句话:
矩阵掩码的思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值。掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响。从数学观点看,我们用自己设置的权值,对像素邻域内的值做了个加权平均。

也就是对一个图片中的每一个像素点重新赋值。值的大小受到该像素点周围4个像素点的影响。

看上面公式,I(i,j)表示目标像素点,i和j分别表示像素点的横纵坐标。 I(i-1,j) 、I(i+1,j) 、 I(i,j-1) 、 I(i,j+1)分别表示目标像素点周围的四个像素点了。上面公式的作用就是,让自己增加4倍,然后减去周围像素点的值,所得到的值便是自己新的值。为什么要这样子做呢?假设b = [ I(i-1,j) + I(i+1,j) + I(i,j-1) + I(i,j+1)],如果目标像素颜色很鲜艳,它周围的像素点颜色不鲜艳,那么通过公式,也就是`5*I(i,j)-b >I(i,j)`,得到的值比原来的值大,也就是目标点会变得更加鲜艳。相反,目标像素点会变得更加不鲜艳。所以,这个掩码操作的作用就是突出像素点,让鲜艳的点更加鲜艳,让昏暗的点更加昏暗。这样操作之后从整个图片上看,图片就有了锐化的效果了。

下面是本人使用opencv程序处理后的照片:
图片1:未经处理的图片。(本文非商用,贴上菲姐的图片应该没有什么问题吧!)

下面是锐化之后的图片:

第二张图片明显比第一张清晰和鲜艳很多。

最后还是贴一下代码吧,虽然其他博客都有这样的代码。不过,貌似中文社区里面没有完整的代码:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>  int main(int argc, char * argb[]) {Mat I = imread("C:\\Users\\liangyh\\Desktop\\timg.jpg");if (I.empty()) {cout << "cannot read the image!" << endl;return 0;}Mat K;Mat kernel = (Mat_<char>(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);filter2D(I, K, I.depth(), kernel);imshow("original", I);imshow("sharpen", K);waitKey(0);return 0;
}

本人拙见,欢迎指教。

理解矩阵的掩码操作 使用opencv锐化图片相关推荐

  1. OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))

    Mat - 基本图像容器 目的 从真实世界中获取数字图像有很多方法,比如数码相机.扫描仪.CT或者磁共振成像.无论哪种方法,我们(人类)看到的是图像,而让数字设备来"看"的时候,则 ...

  2. OpenCV 【十三】矩阵的掩码操作

    目录 1 Mask掩膜/滤波核 1.1 原理 1.2 实例 1.3 结果对比 2. filter2D函数 2.1 原理 2.2 实例 2.3 结果 1 Mask掩膜/滤波核 1.1 原理 矩阵的掩码操 ...

  3. OpenCV学习笔记:矩阵的掩码操作

    矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的权值,对像素邻 ...

  4. OpenCV学习笔记之掩码操作

    一.掩码操作 矩阵的掩码操作很简单.其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值.掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响.从数学观点看,我们用自己设置的 ...

  5. 【OpenCV学习】第2课:图片锐化 - 矩阵的掩膜操作(卷积中的锐化算子)

    仅自学做笔记用,后续有错误会更改 理论 这里用到的掩膜,其实只是数学中卷积的概念的一个应用 上下左右4个像素值分别乘以-1,再加上中间像素值乘以5的值,最后得到的值再重新赋值给中间像素,这就是掩膜的一 ...

  6. 独家|OpenCV 1.3 矩阵的掩膜操作(附链接)

    翻译:陈之炎 校对:王可汗.林夕本文约1600字,建议阅读5分钟本文为大家介绍了 OpenCV 矩阵的官方教程. 矩阵的掩膜操作(mask)并不难.主要思路为:根据掩膜矩阵(也称为内核kernel)重 ...

  7. OpenCV对矩阵进行padding操作

    <OpenCV系列教程> <深度学习-如何提高数据集质量> 项目位置:OpenCV-Sample 代码位置:38-copyMakeBorder.py OpenCV的矩阵的Pad ...

  8. 矩阵的掩模操作(锐化举例)

    矩阵的掩模操作(通常也叫做卷积操作)非常简单.本文的中心思想是基于掩模矩阵(也称为内核或者卷积核)重新计算图像每个像素的值.此掩模矩阵(卷积核)的值定义了当前像素和相邻像素对新像素值进行影响的值.Fr ...

  9. 转载:矩阵的掩膜操作实现图像对比度调整

    矩阵的掩膜操作实现图像对比度调整 hb707934728 2017-07-04 13:54:17 1170 收藏 最后发布:2017-07-04 13:54:17首发:2017-07-04 13:54 ...

最新文章

  1. 定义一个有参宏判断一个字符是否在0~9之间
  2. 沈南鹏谈科学:第一性原理,“无为”而“有趣”
  3. css中底部sticky footer
  4. android加载圈,SwipeRefreshLayout加载圈不会隐藏在android中
  5. 听说面试又挂在计算机操作系统了?仔细看看这个!!!【强烈推荐】
  6. 您好,dotnet tool
  7. 【保存】java学习全套视频下载地址
  8. 训练第一个机器学习模型
  9. python动态调用自定义模块_python importlib动态导入模块 reload重载模块
  10. 酒店管理系统c语言课程设计,基于C语言的酒店管理系统课程设计.doc
  11. 苹果电脑上好用的几款数据备份工具
  12. 解决“为了对电脑进行保护,已经阻止此应用”问题
  13. Linux 之旅 21:编译安装软件
  14. 懒惰学习_为了懒惰!
  15. MFC 的 Picture Control 加载 BMP/PNG 图片的方法
  16. html jade引入,html模板引擎jade的使用
  17. AHCI协议、NVME协议、SATA总线、PCIe总线、SATA接口、PCIe接口、M.2接口
  18. 终于找到macOS校正系统时间方法了
  19. 利用ADSL拨号上网方式如何搭建服务器
  20. DrugBank模型数据集比较

热门文章

  1. 损失函数的意义和作用_哈佛CASTER | 基于化学子结构表征预测药物相互作用
  2. APT(高级可持续性威胁)
  3. 使用HTML5的WebSocket实现服务端和客户端数据通信(有演示和源码)
  4. 手动增加swap空间
  5. 【大数据学习】数学基础及应用
  6. 如何通过手机客户端Android、Iphone 等访问要求使用客户端证书SSL加密的https网站...
  7. JQuery.JCShare 0.2 发布(加入弹窗功能)
  8. 群晖服务器性能测试,原创首发!群晖J3455 G4560 I7 4770HQ功耗性能测试!
  9. 市面上不成熟的系统Java_回顾java基础知识
  10. ## 应用Python爬虫、Flask框架、Echarts、WordCloud等技术实现豆瓣Top250数据分析