资源简介
基于opencv3.4.3的,冈萨雷斯的《数字图像处理》第三章3.7小节混合空间增强法的实现。欢迎大家拍砖,以求斧正!o(* ̄︶ ̄*)o
若下载代码的话,记得改一下图片路径,我没做图片是否为空的判断,直接运行,图片路径不对的话,会报错的。
代码片段和文件信息
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
Mat src = imread(“D:/Image/bone.tif“IMREAD_GRAYSCALE);
imshow(“src_a“ src);
Mat laplace laplaceAddsrc;
//卷积核:laplace锐化
Mat kernel_laplace = (Mat_(3 3) << -1 -1 -1 -1 8 -1 -1 -1 -1);
filter2D(src laplace CV_8U kernel_laplace);
imshow(“b_laplace“ laplace);
//原图与laplace锐化结果相加得图c,突出边缘
add(src laplace laplaceAddsrc);
imshow(“c_added“ laplaceAddsrc);
//计算原图的Sobel梯度,得图d,sobel虽然本身能抑制噪声,但效果不是特别好,sobel的结果图中,仍有许多噪声
Mat sobel gx gy;
Sobel(src gx CV_8U 1 0 3 1.0 0.0 BORDER_DEFAULT);
Sobel(src gy CV_8U 0 1 3 1.0 0.0 BORDER_DEFAULT);
convertScaleAbs(gx gx);
convertScaleAbs(gy gy);
add(gx gy sobel);
convertScaleAbs(sobel sobel);
imshow(“d_sobel“ sobel);
//5*5的均值滤波,模糊原图,原图的噪点被有效抑制了,同时也磨掉了原图的边缘
Mat blured blur_sobelmulty;
blur(src blured Size(5 5) Point(-1 -1));
//滤波后再用sobel,得到的是图像的大致的边缘,相比图d,图e就干净了很多,没那么多噪点
Sobel(blured gx CV_8U 1 0 3 1.0 0.0 BORDER_DEFAULT);
Sobel(blured gy CV_8U 0 1 3 1.0 0.0 BORDER_DEFAULT);
convertScaleAbs(gx gx);
convertScaleAbs(gy gy);
add(gx gy blur_sobel);
imshow(“e_sobelAfterBlur“ blur_sobel);
//与操作,用laplace增强过的图c和图f做与操作,综合laplace和滤波后的sobel的效果,
//对比图f和图b,图f过滤掉了噪声,留下被5*5均值滤波滤掉的边缘细节。这里的边缘细节在laplace的作用下,被增强了
Mat f g;
bitwise_and(laplaceAddsrc blur_sobel f);
imshow(“f“ f);
//原图和f相加,用提取出的增强的边缘,作用在原图上,相比laplace,仅对骨骼和人体的边缘做了增强。突出了骨骼和人体的部分。
//laplace对噪声敏感,它不仅会增强突出边缘,也会增强噪点。
add(src f g);
imshow(“g“ g);
//效果图,自加一次,增强。冈萨雷斯里面是做幂律变换,我没做,只是做了个简单的增强,看着玩。
add(g gg);
imshow(“h“ g);
imwrite(“D:/Image/bone1.tif“ g);
waitKey();
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2116 2018-12-07 10:36 bone\bone.cpp
文件 242754 2000-08-13 21:44 bone\bone.tif
目录 0 2018-12-07 10:37 bone
----------- --------- ---------- ----- ----
244870 3
- 上一篇:多目标跟踪 JPDA
- 下一篇:二维二分类的数据
评论
共有 条评论