精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MATLAB的Sobel圖像邊緣灰度值檢測算法的詳細公式和實現資料概述

電子工程師 ? 來源:未知 ? 作者:易水寒 ? 2018-08-26 09:47 ? 次閱讀

圖像邊緣就是圖像灰度值突變的地方,也就是圖像在該部分的像素值變化速度非常之快,就比如在坐標軸上一條曲線有剛開始的平滑突然來個大轉彎,在變化出的導數非常大。

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) 計算平方根abs(x) 取數值的絕對值和復數的幅值

在對圖像數據進行運算時最好將圖像數據轉化成double類型的,避免精度損失。

Sobel邊緣檢測MATLAB實現

Sobel Edge Detect

1 %RGB_YCbCr 2 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:COL23 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 end27 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 Filter37 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-144 for c = 2:COL-145 median3x3 =[imgn(r-1,c-1) imgn(r-1,c) imgn(r-1,c+1)46 imgn(r,c-1) imgn(r,c) imgn(r,c+1)47 imgn(r+1,c-1) imgn(r+1,c) imgn(r+1,c+1)];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 end55 end56 57 figure;58 imshow(Median_Img);59 60 %Sobel_Edge_Detect61 62 Median_Img = double(Median_Img);63 Sobel_Threshold = 150;64 Sobel_Img = zeros(ROW,COL);65 for r = 2:ROW-166 for c = 2:COL-167 Sobel_x = Median_Img(r-1,c+1) + 2*Median_Img(r,c+1) + Median_Img(r+1,c+1) - Median_Img(r-1,c-1) - 2*Median_Img(r,c-1) - Median_Img(r+1,c-1);68 Sobel_y = Median_Img(r-1,c-1) + 2*Median_Img(r-1,c) + Median_Img(r-1,c+1) - Median_Img(r+1,c-1) - 2*Median_Img(r+1,c) - Median_Img(r+1,c+1);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 else74 Sobel_Img(r,c)=255;75 end76 end77 end78 79 figure;80 imshow(Sobel_Img);

處理后的圖片效果

中值濾波后的lena

Sobel邊沿檢測后的lena

為了使圖像邊緣更加明朗,可以在Sobel的基礎上再進行腐蝕膨脹處理,腐蝕膨脹處理

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    182

    文章

    2963

    瀏覽量

    230195
  • 卷積
    +關注

    關注

    0

    文章

    95

    瀏覽量

    18499
  • 圖像邊緣
    +關注

    關注

    0

    文章

    10

    瀏覽量

    7329

原文標題:基于MATLAB的Sobel邊緣檢測算法實現

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    算法系列:基于 FPGA 的圖像邊緣檢測系統設計(sobel算法

    [8:3]; 五、sobel 邊緣檢測 邊緣檢測的原理 該算子包含兩組 3x3 的矩陣,分別為橫向及縱向,將之與
    發表于 03-26 16:40

    基于FPGA的實時邊緣檢測系統設計,Sobel圖像邊緣檢測,FPGA圖像處理

    。 (2)MATLAB與FPGA運行時間對比 在MATLAB使用本文所述的 Sobel 邊緣檢測算法,提取一張1024720分辨率的
    發表于 05-24 07:45

    Matlab圖像自編邊緣檢測算法

    Matlab圖像自編邊緣檢測算法,多謝了
    發表于 12-03 20:58

    【Z-turn Board試用體驗】+ 基于Z-turn的圖像邊緣檢測系統(三)

    Library視頻庫替換,實現讀取功能,將其送入到加速模塊中,進行邊緣檢測算法處理。處理后結果利用HLS OpenCV Library庫函數進行寫入。算法流程框圖如所示。接下來分模塊
    發表于 07-07 20:41

    【Banana Pi M1+申請】閾值自適應視頻邊緣檢測算法的嵌入式快速實現

    申請理由:本人已經成功完成閾值自適應視頻邊緣檢測算法的FPGA快速實現,但FPGA也有很多局限性,所以想將硬件平臺從FPGA換成香蕉派。相信會有全新的體驗,和更加快捷的開發途徑。項目描述:在香蕉派上
    發表于 06-20 15:55

    基于FPGA的Sobel邊緣檢測實現

    就是圖像灰度突變的地方,亦即圖像在該部分的像素變化速度非常之快,這就好比在坐標軸上一條曲線有剛開始的平滑突然來個大轉彎,在變化出的導數非
    發表于 08-29 15:41

    基于FPGA的邊緣檢測Sobel算法

    轉帖摘要: 針對嵌入式軟件無法滿足數字圖像實時處理速度問題,提出用硬件加速器的思想,通過FPGA實現Sobel邊緣檢測算法。通過乒乓操作、并
    發表于 11-29 08:57

    圖像邊緣檢測算法體驗步驟(Photoshop,Matlab

    圖像邊緣檢測算法體驗步驟(Photoshop,Matlab)1. 確定你的電腦上已經安裝了Photoshop和Matlab2. 使用手機或其
    發表于 03-06 10:51

    基于Qualcomm FastCv的邊緣檢測算法詳解

    、物質屬性變化和場景照明變化等等。 邊緣檢測圖像處理和計算機視覺中,尤其是特征提取中的一個研究領域。一.算法原理:所謂邊緣是指其周圍像素
    發表于 09-21 11:45

    基于視覺圖像的微小零件邊緣檢測算法研究

    實現亞像素細分?! ? 擴展的Sobel細化算子  2.1 擴展的兩個模板  圖像目標的邊緣灰度不連續性的反映,其種類可粗略區分為:階躍性
    發表于 11-15 16:23

    Labview圖像處理——邊緣檢測

    邊緣灰度過度較為明顯,梯度算子可以得到較好的邊緣檢測結果。邊緣提取其實也是一種濾波,不同的算
    發表于 12-01 12:16

    迅為iTOP-RK3568開發板Sobel 算子邊緣檢測

    (索貝爾)算子是計算機視覺領域的一種重要處理方法。主要用于獲得數字圖像的一階梯度,常見的應用和物理意義是邊緣檢測。 索貝爾算子把圖像中每個像素的上下左右四領域的
    發表于 09-18 10:27

    基于改進Canny的圖像邊緣檢測算法

    劃分為階躍型和屋頂型兩種類型:階躍型邊緣兩邊的灰度有很大的差別;屋頂型邊緣存在于灰度從增加到
    發表于 11-02 15:15 ?19次下載
    基于改進Canny的<b class='flag-5'>圖像</b><b class='flag-5'>邊緣</b><b class='flag-5'>檢測算法</b>

    基于CORDIC的高速Sobel算法實現

    為提高圖像邊緣檢測的處理速度,提出一種基于CORDIC的高速Sobel算法實現
    的頭像 發表于 10-05 09:54 ?3541次閱讀
    基于CORDIC的高速<b class='flag-5'>Sobel</b><b class='flag-5'>算法</b><b class='flag-5'>實現</b>

    FPGA圖像處理的Sobel邊緣檢測

    分近似。如果以A代表原始圖像,Gx及Gy分別代表經橫向及縱向邊緣檢測圖像灰度
    的頭像 發表于 03-22 09:45 ?2923次閱讀
    FPGA<b class='flag-5'>圖像</b>處理的<b class='flag-5'>Sobel</b><b class='flag-5'>邊緣</b><b class='flag-5'>檢測</b>