醋醋百科网

Good Luck To You!

图像处理——膨胀与腐蚀

一、结构元素和锚点

数学形态学中最基本的概念是结构元素。结构元素可以简单地定义为像素的组合(下图的黄色正方形),在对应的像素上定义了一个原点(也称锚点)。


二、图像腐蚀和膨胀

1、腐蚀

腐蚀就是把当前像素替换成所定义像素集合中的最小像素值,如图对左上角9个像素点进行腐蚀,以1号像素点为锚点,结构元素为1、2、4、5号,最小值为5号(像素值4),所以替换后像素值4;以5号像素点为锚点,结构元素为1、2、3、4、5、6、7、8、9号,最小像素点是6号(像素值1),所以腐蚀后像素值为1。以此类推,对所有像素点像素值替换。



2、膨胀

膨胀是腐蚀的反运算,它把当前像素替换成所定义像素集合中的最大像素值。原理可参考腐蚀。



、程序实现

OpenCV用简单的函数实现了腐蚀和膨胀运算,它们分别是 cv:erode 和 cv:dilate,用法也很简单。

#include <QtCore/QCoreApplication>
#include <opencv2/opencv.hpp>
#include <iostream>


int main(int argc, char* argv[]) {
   cv::Mat srcImage;
   srcImage = cv::imread("E:/image/P2.bmp", cv::IMREAD_GRAYSCALE); // 读取输入图像
   cv::namedWindow("srcImage");					         // 定义窗口
   cv::imshow("srcImage", srcImage);					     // 显示图像
   // 腐蚀图像
   // 采用的 3×3 结构元素
   cv::Mat eroded; // 目标图像
   cv::erode(srcImage, eroded, cv::Mat());
   cv::namedWindow("eroded");
   cv::imshow("eroded", eroded);
   // 膨胀图像
   cv::Mat dilated; // 目标图像
   cv::dilate(srcImage, dilated, cv::Mat());
   cv::namedWindow("dilated");
   cv::imshow("dilated", dilated);
   QCoreApplication a(argc, argv);
   return a.exec();
}



控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言