前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >opencv学习(二)-矩阵的掩码操作

opencv学习(二)-矩阵的掩码操作

作者头像
flytam
发布2020-01-14 17:56:20
9430
发布2020-01-14 17:56:20
举报
矩阵的掩码操作

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

对图像的每个像素应用下面的公式:

即:每个像素 = 该像素*5 - 相邻上下左右的像素的和

原始算法按照这个公式边界值是计算不了的,因为会访问到旁边不存在的元素,需要将边界元素设置成 0

那么,图像矩阵经过这个操作后会发生什么呢?

假设中间像素是很亮的话,显然经过运算会更亮。中间元素亮度低的话,经过运算就会更暗。因此经过这个运算后图像对比度会增强,亮的更亮,暗的更暗

下面的函数就是将原图像和掩码矩阵进行卷积运算

Mat.filter2D(ddepth: number, kernel: Mat, anchor?: Point2, delta?: number, borderType?: number): Mat

代码语言:javascript
复制
const cv = require("opencv4nodejs");
const input = cv.imread("../../data/Lenna.png");

// 掩码矩阵
// 必须是单通道浮点型矩阵
const kernel = new cv.Mat([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], cv.CV_32FC1);

const output = input.filter2D(input.depth, kernel);

cv.imshow("input", input);
cv.imshow("output", output);
cv.waitKey();

函数参数解释

  • ddepth 图像深度
  • kernel 卷积核(或者是相关核),一个单通道浮点型矩阵。如果想在图像不同的通道使用不同的 kernel,可以先使用split函数将图像通道事先分开。
  • anchor 内核的基准点(anchor),其默认值为(-1,-1)说明位于 kernel 的中心位置。基准点即 kernel 中与进行处理的像素点重合的点。
  • delta 在储存目标图像前可选的添加到像素的值,默认值为 0
  • borderType 像素向外逼近的方法,默认值是 BORDER_DEFAULT,即对全部边界进行计算。
在这里插入图片描述
在这里插入图片描述

tips:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 矩阵的掩码操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档