图像分割-10.2.4边缘模型、边缘检测、
来源:互联网 发布:东海村核临界事故知乎 编辑:程序博客网 时间:2024/06/05 19:08
图像梯度及其性质:
该向量有一个重要的几何性质,它指出了f在位置(x,y)处的最大变化率的方向。
向量的大小(长度)表示为M(x,y),即:
它是梯度向量方向变化率的值。其中,M(x,y)都是和原图大小相同的图像,是x,y在f中的所有像素位置上变化时产生的。
M(x,y)称为梯度图像。梯度向量的方向由下列对于x轴度量的角度给出:
边缘模型:
台阶模型 斜坡模型 屋顶模型
,一阶导数的幅度可用于检测图像中的某个点处是否存在一个边缘。二阶导数的符号可用于确定一个便于像素位于该边缘的俺的一侧还是亮的一侧。
图像的每条边缘,二阶导数生成两个值(一条不希望的特点)。二阶导数的零交叉点(二阶导数级之间的连线与零灰度轴的交点称为该二阶导数的零交叉点),可用于定位粗边缘的中心。
梯度算子
一维模板
罗伯特交叉梯度算子
Roberts Prewitt Sobel
,,,
沿对角线方向有最大响应:
Prewitt Sobel
二维梯度幅值和角度:
原图 x方向梯度,y方向梯度,梯度图像+
代码:
#include<iostream>#include"opencv.hpp"using namespace cv;using namespace std;#define N 3#ifdef _DEBUG#pragma comment(lib,"opencv_core2413d.lib")#pragma comment(lib,"opencv_imgproc2413d.lib")#pragma comment(lib,"opencv_highgui2413d.lib")#pragma comment(lib,"opencv_features2d2413d.lib")#pragma comment(lib,"opencv_calib3d2413.lib")#else#pragma comment(lib,"opencv_core2413.lib")#pragma comment(lib,"opencv_imgproc2413.lib")#pragma comment(lib,"opencv_highgui2413.lib")#pragma comment(lib,"opencv_features2d2413.lib")#pragma comment(lib,"opencv_calib3d2413.lib")#endifint kernel_size = 3;int scale = 1;int delta = 0;int ddepth = CV_16S;int main(){Mat src = imread("Fig1016(a)(building_original).tif", 0); if (!src.data){cout << "error src image" << endl;}if (src.channels() != 1){cvtColor(src, src, CV_BGR2HLS);}resize(src, src, Size(500, 500), 0.5, 0.5);imwrite("o.jpg", src);Mat dst=Mat::zeros(src.rows,src.cols,CV_8UC1);Mat grad_x, abs_grad_x, src_gray, grad_y, abs_grad_y, grad;Sobel(src, grad_x, src.type(), 1, 0, 3, 1, 0, BORDER_DEFAULT);convertScaleAbs(grad_x, abs_grad_x);imshow("abs_grad_x", abs_grad_x);Sobel(src, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT);// Scharr( src_gray, grad_y, ddepth, 0, 1, scale, delta, BORDER_DEFAULT ); convertScaleAbs(grad_y, abs_grad_y);imshow("abs_grad_y", abs_grad_y);/// 合并梯度(近似) addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad);imshow("abs_grad", grad);waitKey();imwrite("x.bmp", abs_grad_x);imwrite("y.bmp", abs_grad_y);imwrite("g.bmp", grad);return 0;}
角度图像不像幅度图像那么有用,当可作为用梯度幅值从图像中提取的信息的补充。图中恒定灰度区域,如斜屋顶的前变暖和前墙顶部的水平条带,
说明在这些区域中的所有像素位置处的梯度方向是相同的。
(不知道角度图像用哪个函数,暂时未实现)。
此外,梯度可以和阈值处理相结合,例如,将阈值设为梯度图像的最大值的33%的像素显示为白色,而低于该阈值的像素显示为黑色。
为防止噪声干扰,可在求梯度前,先对图像进行平滑处理。
参考文献:《数字图像处理》(第三版)冈萨雷斯
0 0
- 图像分割-10.2.4边缘模型、边缘检测、
- 图像分割 和 边缘检测
- 边缘检测与图像分割
- 图像分割之边缘检测
- 图像分割与边缘检测
- 灰度图像--图像分割 Canny边缘检测
- 图像分割技术之图像边缘检测
- 灰度图像--图像分割 边缘模型
- 数字图像处理之边缘检测,图像分割
- U-net使用, 图像分割(边缘检测)
- U-net使用, 图像分割(边缘检测)
- U-net使用, 图像分割(边缘检测)
- 图像分割·基于边缘检测
- U-net使用, 图像分割(边缘检测)
- 灰度图像--图像分割 边缘检测算子 综述
- 图像边缘检测界面
- poj1009图像边缘检测
- 关于图像边缘检测
- 定义结构体指针时,有没有同时分配存储空间?
- 硬件创业者们,如何避免掉到供应链的大坑里爬不出来
- gradle多渠道打包替换图片、xml等资源文件
- Java设计模式——适配器模式
- bash中字符串和数组的遍历
- 图像分割-10.2.4边缘模型、边缘检测、
- Java中使用Jedis操作Redis
- SHOW INNODB STATUS 探秘
- 不同显卡(GPU)浮点数计算能力
- android音视频点/直播模块开发
- 窗体按钮权限控制
- android 5 通知栏
- 水管工游戏
- 算法之路(一)----求最大子序列