百度怎样做网站,网站开发方面知识,建设公司网站建设报价,毕业设计代做网站多少钱图像边缘就是图像灰度值突变的地方#xff0c;也就是图像在该部分的像素值变化速度非常之快#xff0c;就比如在坐标轴上一条曲线有刚开始的平滑突然来个大转弯#xff0c;在变化出的导数非常大。 Sobel算子主要用作边缘检测#xff0c;它是一离散型差分算子#xff0c;用… 图像边缘就是图像灰度值突变的地方也就是图像在该部分的像素值变化速度非常之快就比如在坐标轴上一条曲线有刚开始的平滑突然来个大转弯在变化出的导数非常大。 Sobel算子主要用作边缘检测它是一离散型差分算子用来计算图像亮度函数灰度之近似值。 边缘是指其周围像素灰度急剧变化的那些像素的集合。边缘存在于目标、背景和区域之间所以边缘是图像分割所依赖的最重要的依据。由于边缘是位置的标志对灰度的变化不敏感因此边缘也是图像匹配的重要的特征。 Sobel边缘检测的核心在于像素矩阵的卷积卷积对于数字图像处理非常重要很多图像处理算法都是做卷积来实现的。卷积运算的本质就是对指定的图像区域的像素值进行加权求和的过程其计算过程为图像区域中的每个像素值分别与卷积模板的每个元素对应相乘将卷积的结果作求和运算运算到的和就是卷积运算的结果。 矩阵的卷积公式如下。 3x3的窗口M与卷积模板C的卷积运算如下。 Gx和Gy是sobel的卷积因子将这两个因子和原始图像做如下卷积。 Sobel卷积因子 其中A代表原始图像。 得到图像中的每一个点的横向纵向灰度值Gx、Gy。最后通过如下公式来计算改变灰度的大小。 但是通常为了提高效率使用不开平方的近似值虽然这样做会损失精度 将Sobel算子的实现划分为五个步骤 1 计算Gx与Gy与模板每行的乘积。 2 两个3x3矩阵的卷积即将每一行每一列对应相乘然后相加。 3 求得3*3模板运算后的Gx、Gy。 4 求Gx^2 Gy^2的平方根或者直接对Gx和Gy取绝对值后求和。 5设置一个阈值运算后的像素值大于该阈值输出为全1小于该阈值输出为全0。 平方根和绝对值函数 sqrt(x) 计算平方根 absx取数值的绝对值和复数的幅值 在对图像数据进行运算时最好将图像数据转化成double类型的避免精度损失。 Sobel边缘检测MATLAB实现 Sobel Edge Detect 1 %RGB_YCbCr2 clc;3 clear all;4 close all;5 6 RGB_data imread(lena.jpg);%7 8 R_data RGB_data(:,:,1);9 G_data RGB_data(:,:,2);
10 B_data RGB_data(:,:,3);
11
12 %imshow(RGB_data);
13
14 [ROW,COL, DIM] size(RGB_data);
15
16 Y_data zeros(ROW,COL);
17 Cb_data zeros(ROW,COL);
18 Cr_data zeros(ROW,COL);
19 Gray_data RGB_data;
20
21 for r 1:ROW
22 for c 1:COL
23 Y_data(r, c) 0.299*R_data(r, c) 0.587*G_data(r, c) 0.114*B_data(r, c);
24 Cb_data(r, c) -0.172*R_data(r, c) - 0.339*G_data(r, c) 0.511*B_data(r, c) 128;
25 Cr_data(r, c) 0.511*R_data(r, c) - 0.428*G_data(r, c) - 0.083*B_data(r, c) 128;
26 end
27 end
28
29 Gray_data(:,:,1)Y_data;
30 Gray_data(:,:,2)Y_data;
31 Gray_data(:,:,3)Y_data;
32
33 figure;
34 imshow(Gray_data);
35
36 %Median Filter
37 imgn imnoise(Gray_data,salt pepper,0.02);
38
39 figure;
40 imshow(imgn);
41
42 Median_Img Gray_data;
43 for r 2:ROW-1
44 for c 2:COL-1
45 median3x3 [imgn(r-1,c-1) imgn(r-1,c) imgn(r-1,c1)
46 imgn(r,c-1) imgn(r,c) imgn(r,c1)
47 imgn(r1,c-1) imgn(r1,c) imgn(r1,c1)];
48 sort1 sort(median3x3, 2, descend);
49 sort2 sort([sort1(1), sort1(4), sort1(7)], descend);
50 sort3 sort([sort1(2), sort1(5), sort1(8)], descend);
51 sort4 sort([sort1(3), sort1(6), sort1(9)], descend);
52 mid_num sort([sort2(3), sort3(2), sort4(1)], descend);
53 Median_Img(r,c) mid_num(2);
54 end
55 end
56
57 figure;
58 imshow(Median_Img);
59
60 %Sobel_Edge_Detect
61
62 Median_Img double(Median_Img);
63 Sobel_Threshold 150;
64 Sobel_Img zeros(ROW,COL);
65 for r 2:ROW-1
66 for c 2:COL-1
67 Sobel_x Median_Img(r-1,c1) 2*Median_Img(r,c1) Median_Img(r1,c1) - Median_Img(r-1,c-1) - 2*Median_Img(r,c-1) - Median_Img(r1,c-1);
68 Sobel_y Median_Img(r-1,c-1) 2*Median_Img(r-1,c) Median_Img(r-1,c1) - Median_Img(r1,c-1) - 2*Median_Img(r1,c) - Median_Img(r1,c1);
69 Sobel_Num abs(Sobel_x) abs(Sobel_y);
70 %Sobel_Num sqrt(Sobel_x^2 Sobel_y^2);
71 if(Sobel_Num Sobel_Threshold)
72 Sobel_Img(r,c)0;
73 else
74 Sobel_Img(r,c)255;
75 end
76 end
77 end
78
79 figure;
80 imshow(Sobel_Img); 处理后的图片效果 中值滤波后的lena Sobel边沿检测后的lena 为了使图像边缘更加明朗可以在Sobel的基础上再进行腐蚀膨胀处理腐蚀膨胀处理下一篇继续分享。 转载请注明出处NingHeChuan宁河川 个人微信订阅号开源FPGA 如果你想及时收到个人撰写的博文推送可以扫描左边二维码或者长按识别二维码关注个人微信订阅号 知乎IDNingHeChuan 微博IDNingHeChuan 原文地址https://www.cnblogs.com/ninghechuan/p/9529936.html 转载于:https://www.cnblogs.com/ninghechuan/p/9529936.html