怎麼在MATLAB中計數二值影象中目標物八鄰域值為某一值的個數

時間 2022-03-25 21:00:14

1樓:匿名使用者

是這樣abs(imfilter(punimage,[-1 0 0;0 1 0;0 0 0]))

abs(imfilter(punimage,[0 -1 0;0 1 0;0 0 0])).

abs(imfilter(punimage,[0 0 -1;0 1 0;0 0 0])).

abs(imfilter(punimage,[0 0 0;-1 1 0;0 0 0])).

abs(imfilter(punimage,[0 0 0;0 1 -1;0 0 0])).

abs(imfilter(punimage,[0 0 0;0 1 0;-1 0 0])).

abs(imfilter(punimage,[0 0 0;0 1 0;0 -1 0])).

abs(imfilter(punimage,[0 0 0;0 1 0;0 0 -1])).

2樓:匿名使用者

a = [1 3 2;4 9 6;5 7 8];

[c,hang] = max(a);

[max_a,lie] = max(c);

最終max_a = 9

hang = 2;

lie= 2;

matlab 如何計算一幅影象中某一灰度值的畫素個數

3樓:小丁創業

方法和詳細的操作步驟如下:

1、第一步,開啟需要處理的影象,然後編寫以下**,見下圖紅框標註處,轉到下面的步驟。

2、第二步,執行完上面的操作之後,可以看到影象均衡的**,見下圖,轉到下面的步驟。

3、第三步,執行完上面的操作之後,畫出平衡**的直方圖,在平衡前後對**進行比較,見下圖。這樣,就解決了這個問題了。

4樓:匿名使用者

可以配合使用函式find和函式length或者函式find和函式length求得。

1、函式find和函式length配合使用獲得畫素為value的畫素個數

% 讀入資料112.bmp是要讀入的影象

i = imread('112.bmp');

% 如果為彩色影象需轉為灰度影象,否則不需要i = rgb2gray(i);

% value為要計算的畫素值

[r,c]=find(i==value);

% 獲得個數

num=length(r);

2、函式find和函式sum配合使用獲得畫素為value的畫素個數% 讀入資料112.bmp是要讀入的影象

i = imread('112.bmp');

% 如果為彩色影象需轉為灰度影象,否則不需要i = rgb2gray(i);

% 獲得畫素值為value的素值個數

num=sum(sum(i==value));

5樓:惠桂蘭紫香

function

greyvalue

=calcrowgrey(pic)

%備註:輸入值為讀取檔案後的影象資料,可以是m行n列或者是[m*n*3]

(彩色**)

%直接計算灰度值,如果是黑白影象,計算結束greyvalue

=sum(greyvalue

,2);

%判斷如果是彩色影象

iflength(size(greyvalue)>2

greyvalue

=sum(greyvalue

,3);end

6樓:匿名使用者

假設a是影象所代表的矩陣,value為某一灰度值,num為影象a中該灰度值的畫素個數,則有:

[r,c]=find(a==value);

num=length(r);

或者num=sum(sum(a==value));

7樓:匿名使用者

很容易。

首先用imread函式把影象讀進矩陣中,

然後用一個迴圈語句,比較畫素值,如果值相同,計數器(例如使用變數num)增加1.灰度是三個色素:紅綠藍三個分量的平均值 。

對影象中連通域進行標記並計算面積matlab 80

matlab程式設計。我有一幅二值影象,我想將影象中間那個白色部分用匡匡起來~怎麼做?

8樓:

車牌識別?

步驟如下:

① 可以用消除小面積元素的辦法獲得你要的感興趣區域,函式格式:

bw2 = bwareaopen(bw,p,conn)作用:刪除二值影象bw中面積小於p的物件

試幾次就知道你的p該選什麼值了,認情況下conn使用8鄰域。

這樣作了之後應該就只剩下感興趣區域的畫素和背景畫素了。

②然後用投影法,即從左往右統計每列畫素的個數,你會發現它們集中在一個區域,然後就有了左右的邊界座標了,同理可以獲取上下的座標。

③切割。有了上面的②過程,切割出來並歸一化大小到你要的尺寸就好做了。

在matlab中如何輸出一個函式的影象

9樓:念周夕陽飄羽

如果要畫y=x^3+x^2+x+5在[-20,20]上的影象,可利用以下方法,繪畫區間可以自己定義:

方法一:利用plot函式來繪畫影象

x=0:0.1:20;     %規定繪畫區間(從-20畫到20,中間以0,1為間隔)

y=x.^3+x.^2+x+5;   %確定要繪畫的函式,注意不要漏了「.」

plot(x,y)

方法二:利用ezplot函式來繪畫影象

ezplot('x^3+x^2+x+5',[-20,20])利用ezplot函式可以直接畫出函式影象

10樓:韌勁

a、 imread

imread函式用於讀入各種影象檔案,其一般的用法為

11樓:匿名使用者

ezplot('x^3+x^2+x+5')

matlab如何統計矩陣中大於或小於某數的元素個數?

12樓:子衿悠你心

方法一:先求出矩陣中所有大於或小於某數的元素,再求個數。

例項:a是2*2的隨機矩陣,求大於0.5的元素個數。

方法二:運用sum函式,**為sum(sum(a>a));

解釋:1. a>a

將陣列a的每個元素都和a比較,大於a返回1,否則為0。結果得到了一個和a結構一致且元素為0或1的二維陣列。顯然該矩陣1的個數就是滿足大於a的元素的個數,那麼只要將矩陣所有元素相加就得到了該行大於a的元素的個數。

2. sum(sum(x))

sum(sum(x))可以求x矩陣中所有元素的和。

拓展說明:

sum函式用法:

a=sum(x);%以矩陣x的每一列為物件,對一列內的數字求和a=sum(x,2);%以矩陣x的每一行為物件,對一行內的數字求和a=sum(x(:));%對矩陣x所有元素求和

13樓:天雲一號

在matlab中,可以通過sum函式和條件表示式來統計矩陣中大於或小於某數的元素的個數。

具體實現方法可以參考如下程式段:

a=[1, 2, 3, 4, 5;

2, 3, 4, 5, 6;

3, 4, 5, 6, 7];

a = sum(a>4); % 統計矩陣a中值大於4的元素的個數% a>4表示判斷矩陣a中每個元素的值是否大於4的,若大於4,則返回1,;否則返回0。

% 所以a>4執行後返回的就是一個只有0和1的向量,此時對該向量進行求和,也就是統計1的個數,即矩陣a中大於4的元素的個數。

14樓:袁怡圃

最簡方法:設二維矩陣a,求a中大於常數b的元素個數:

sum(sum(a>b))

15樓:匿名使用者

a=.....;

[m,n]=size(a);

xx=..

yy=..

for i=1:m*n

if a(i)yy

t2=t2+1;

endend

disp(['小於',num2str(xx),'的個數=',num2str(t1)]);...

16樓:

a = [2 3 6 8 6 4 5 9 12 3 6];

x = 6;

y = 5;

indx = find(a > x);

numx = length(indx);

indy = find(a < y);

numy = length(indy);

disp(['大於',num2str(x),'的個數=',num2str(numx)]);

disp(['小於',num2str(y),'的個數=',num2str(numy)]);

17樓:匿名使用者

a=magic(5)

sum(sum(a>15))

如何matlab統計陣列中相同元素的個數

18樓:我叫王土土豆

matlab統計陣列中相同元素的個數步驟如下:

1、開啟matlab,在命令列視窗中輸入a=[1 3 5;6 7 8],建立一個二維陣列。

2、輸入length(a(:)),統計a陣列的元素個數。

3、按回車鍵,可以看到a陣列元素個數為6。

4、輸入[m,n]=size(a),統計陣列的元素。

5、輸入m*n,按回車鍵可以看到陣列元素個數為6。

19樓:依然特雷西

1、開啟matlab,在命令列視窗中輸入a=[1 3 5;6 7 8],建立一個二維陣列,如下圖所示。

2、輸入length(a(:)),統計a陣列的元素個數,如下圖所示。

3、按回車鍵,可以看到a陣列元素個數為6。

4、輸入[m,n]=size(a),統計陣列的元素。

5、輸入m*n,按回車鍵可以看到陣列元素個數為6。

20樓:信玄居士

假定要分析的矩陣為data,

x=data(:)

x=sort(x);

d=diff([x;max(x)+1]);

count = diff(find([1;d])) ;

y =[x(find(d)) count]最後輸出的y(1)為元素值,y(2)為所對應的元素值在此矩陣中的出現的次數

21樓:宇逸

>> a=[1 5 8 6;5 8 1 7;3 6 8 1;2 8 4 6];

>> b=sort(a(:)');

>> [c,i]=unique(b)

>> n=length(c);

>> disp(['陣列中元素',num2str(c(1)),'的個數為:',num2str(i(1))])

>> for j=2:n

disp(['陣列中元素',num2str(c(j)),'的個數為:',num2str(i(j)-i(j-1))])

end陣列中元素1的個數為:3

陣列中元素2的個數為:1

陣列中元素3的個數為:1

陣列中元素4的個數為:1

陣列中元素5的個數為:2

陣列中元素6的個數為:3

陣列中元素7的個數為:1

陣列中元素8的個數為:4

>>看看這個例子是否符合你的要求!?

22樓:匿名使用者

% 方法好多的。。

% 假如

a = [1 3 5 3 1 5 3 1 1 3 5];

% method1

result=unique(a);

count = hist(a,unique(a));

% method2

a=sort(a);

d=diff([a;max(a)+1]);

count=diff(find([1;d])) ;

y =[a(find(d)) count];

% method3

% 直接用tabulate函式

tabulate(a)

matlab二值影象擷取

可以使用bwperim 函式進行輪廓提取,具體 如下 讀取原圖 im imread filepath imshow im title 原圖 轉二值影象 bw im2bw im 輪廓提取 contour bwperim bw figure imshow contour title 輪廓 原圖和所提取的...

matlab裡怎麼呼叫函式,在matlab中怎麼直接呼叫函式

手機使用者 matlab可以在m檔案函式中定義一個函式和多個子函式,但是需要注意的是子函式只能由同一m檔案中的函式呼叫。如下面的例子 function max,min mypfun x 主函式n length x max mysubfun1 x,n min mysubfun2 x function ...

二維二值矩陣用平面圖顯示出來,matlab命令是什麼

淚之夢幻 對於一個二值矩陣,你可以用 pcolor x,y,c 一般x,y是一個二維矩陣 或者一維矩陣,但是一個是行向量,一個是列向量 c的行數和列數與x,y相同。如果是一維矩陣,c的行數等於x的行數,列數等於y的列數 就是在 x i,j y i,j 座標點輸出c i,j 顏色。形象地可以這樣理解。...