目录
一、顶帽运算(礼帽)
二、底帽运算(黑帽)
三、底帽运算应用(二值图像底帽运算)
1、原图转灰度图,再转二值图像
2、灰度图底帽处理
3、二值图闭运算
代码
总代码
参考资料
一、顶帽运算(礼帽)
取出亮度高的地方
顶帽运算 = 原图像 - 开运算
开运算可以消除暗背景下的高亮区域,那么如果用原图减去开运算结果就可以得到原图中灰度较亮的区域,所以又称白顶帽变换。
C++:
//顶帽运算
void TopHat()
{
//开运算
Mat kernel = getStructuringElement(MORPH_RECT, Size(19, 19)); //创建结构元
// 矩形卷积核 尺寸为(19,19)宽高
morphologyEx(img, dst, MORPH_OPEN, kernel, Point(-1, -1)); // 形态学处理--开运算
// 原图 新图 开运算 卷积核 锚点
imshow("开运算", dst); // 显示形态学处理后的效果
//顶帽运算(白顶帽运算)
dst = img - dst;
//morphologyEx(img, dst, MORPH_TOPHAT, kernel, Point(-1, -1), 1); // 形态学处理--开帽变换
imshow("顶帽运算", dst);
}
python:
# 顶帽(原-开)
def TopHat():
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, (7, 7), iterations=5)
# 类型 卷积核 迭代次数
cv2.imshow('TopHat', tophat)
二、底帽运算(黑帽)
取出亮度低的地方
底帽运算 = 原图像 - 闭运算
闭运算可以删除亮背景下的暗区域,那么用原图减去闭运算结果就可以得到原图像中灰度较暗的区域,所以又称黑底帽变换。
C++:
//底帽运算
void BlackHat()
{
//闭运算
Mat kernel = getStructuringElement(MORPH_RECT, Size(19, 19)); //创建结构元
// 矩形卷积核 尺寸为(19,19)宽高
morphologyEx(img, dst, MORPH_CLOSE, kernel, Point(-1, -1)); // 形态学处理--开运算
// 原图 新图 闭运算 卷积核 锚点
imshow("闭运算", dst); // 显示形态学处理后的效果
//底帽运算(黑帽运算)
//morphologyEx(img, dst, MORPH_BLACKHAT, kernel, Point(-1, -1), 1); // 形态学处理--底帽变换
dst = img - dst;
imshow("底帽运算", dst);
}
python:
# 底帽(原-闭)
def BlackHat():
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, (7, 7), iterations=5)
#