matlab練習程式(地區填充演算法,隊列版)

來源:互聯網
上載者:User

  其實寫過一步法二值映像連通地區標記之後我就感覺這個標記和填充基本上是一回事,所以我這裡就用了一步法的那個隊列演算法。也沒什麼好說的,演算法幾乎一樣,就是細節的區別。還有這裡使用了ginput函數。至於堆棧版的實現,看情況吧。

clear all;close all;clc;img=imread('liantong.bmp');img=img>128;img=mat2gray(img);imshow(img);[m n]=size(img);[x y]=ginput();x=round(x);y=round(y);tmp=ones(m,n);queue_head=1;       %隊列頭queue_tail=1;       %隊列尾neighbour=[-1 -1;-1 0;-1 1;0 -1;0 1;1 -1;1 0;1 1];  %和當前像素座標相加得到八個鄰域座標%neighbour=[-1 0;1 0;0 1;0 -1];     %四鄰域用的q{queue_tail}=[y x];queue_tail=queue_tail+1;[ser1 ser2]=size(neighbour);while queue_head~=queue_tail    pix=q{queue_head};    for i=1:ser1        pix1=pix+neighbour(i,:);        if pix1(1)>=1 && pix1(2)>=1 &&pix1(1)<=m && pix1(2)<=n            if img(pix1(1),pix1(2))==1                 img(pix1(1),pix1(2))=0;                q{queue_tail}=[pix1(1) pix1(2)];                queue_tail=queue_tail+1;            end              end    end    queue_head=queue_head+1;endfigure(1);imshow(mat2gray(img));

原圖

下面是不同的填充效果:

參考:

維基百科

一個不錯的C實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.