MATLAB中怎樣提取一幅影象的RGB資訊,並且將結果輸出到矩陣中

時間 2021-05-07 19:59:54

1樓:阿瞞0超群

clc,clear,close;

im = imread('c:\users\administrator\desktop\123.png') %讀取檔案路徑,im就是你要的舉證

2樓:匿名使用者

1開啟影象

請選擇影象資料');

str=[filepath filename];

image=imread(str);

% 以對話方塊的形式選擇開啟一幅影象

2設定引數

gray=rgb2gray(image);

r=image(:,:,1); g=image(:,:,2); b=image(:,:,3);

diff_r=0; diff_g=0; diff_b=0; % 設定紅、綠、藍三種顏色提取閾值(越大越嚴格)

3紅色提取

image_r=image;

rp_r=image(:,:,1); rp_g=image(:,:,2); rp_b=image(:,:,3);

xyr=~((r-g)>diff_r&(r-b)>diff_r); % 提取紅色條件是r分量與g、b分量差值大於設定

mask=gray(xyr); % 灰**掩膜

rp_r(xyr)=mask; rp_g(xyr)=mask; rp_b(xyr)=mask; % 使得非紅色區域變為灰色

image_r(:,:,1)=rp_r; image_r(:,:,2)=rp_g; image_r(:,:,3)=rp_b;

4綠色提取

image_g=image;

gp_r=image(:,:,1); gp_g=image(:,:,2); gp_b=image(:,:,3);

xyg=~((g-r)>diff_g&(g-b)>diff_g); % 提取綠色條件是g分量與r、b分量差值大於設定

mask=gray(xyg); % 灰**掩膜

gp_r(xyg)=mask; gp_g(xyg)=mask; gp_b(xyg)=mask; % 使得非綠色區域變為灰色

image_g(:,:,1)=gp_r; image_g(:,:,2)=gp_g; image_g(:,:,3)=gp_b;

5藍色提取

image_b=image;

bp_r=image(:,:,1);bp_g=image(:,:,2);bp_b=image(:,:,3);

xyb=~((b-r)>diff_b&(b-g)>diff_b); % 提取綠色條件是g分量與r、b分量差值大於設定

mask_b=gray(xyb); % 灰**掩膜

bp_r(xyb)=mask_b; bp_g(xyb)=mask_b; bp_b(xyb)=mask_b; % 使得非藍色區域變為灰色

image_b(:,:,1)=bp_r; image_b(:,:,2)=bp_g; image_b(:,:,3)=bp_b;

6顯示結果

matlab中如何取出矩陣中的某一個值

3樓:藤閣美人

1、開啟matlab,在命令列視窗中輸入 a=[1 2 3;4 5 6],按回車鍵,建立一個2行3列的a矩陣內

2、如果我們想獲取矩陣第

容2行第1列的值,輸入a(2,1)

3、如果想獲取矩陣第2行第3列的值,輸入a(2,3)4、如果想間隔的獲取矩陣多個值,可以使用 a(2,[1 3])方式,這是獲取矩陣第2行第1列,第3列的值

5、如果我們想獲取第2行的資料,可以使用a(2,:)

4樓:天雲一號

在matlab中,取出bai矩陣中某一個值的方du法如下:

1、對於二維陣列zhi:dao

a(i, j) % 表示取出專二維陣列a的第

屬 i 行,第 j 列的資料

a(:, j) % 表示取出二維陣列a的第 j 列的所有資料

a(i, :) % 表示取出二維陣列a的第 i 行的所有資料

2、多維陣列的方法與二維陣列類似(以三維陣列為例):

b(i, j, k) % 表示取出三維陣列a的第k個二維陣列的第 i 行,第 j 列的資料

b(:, j, k) % 表示取出三維陣列a的第k個二維陣列的第 j 列的所有資料

b(i, :, k) % 表示取出三維陣列a的第k個二維陣列的第 i 行的所有資料

b(i, j, :) % 表示取出三維陣列a的每個二維陣列的第 i 行,第 j 列的資料

5樓:匿名使用者

objv(1,1)才是第一個數

或objv(1,:)

用matlab讀取彩色**,並提取rgb值按畫素順序放到一個三維矩陣裡,該怎麼寫程式?

6樓:匿名使用者

帶程式的那個回答程式是錯誤的,為了提取影象i的r分量,其相應程式為i_r=i(:,:,1)而非答案中所寫的g_r(i,j)=i(i,j,1); %%提取r分量

7樓:匿名使用者

i=imread('mm.bmp'); %%讀取源彩色影象

>> size=size(i);

>> i=size(1);

>> j=size(2);

>> g_r(i,j)=i(i,j,1); %%提取r分量>> g_g(i,j)=i(i,j,2);

>> g_b(i,j)=i(i,j,3);

8樓:匿名使用者

不知道你為什麼要bai生成第一du、

二、三列分別表zhi

示每個dao畫素的r、g、b值的矩陣回,其實matlab自動答把三個通道分開是有道理的,處理會很方便,如果你一定要生產你想要的矩陣,可嘗試以下幾種方法:

1.以進位制的格式讀**,然後去掉影象的資訊頭(注意每個格式的標頭檔案包含的位元組數都不一樣的,以真彩色bmp為例,其標頭檔案有54個位元組,去掉著54個位元組後就是影象的rgb資訊了)

2.第二種會稍微方便些,用imread讀圖生成一個三維矩陣,然後你新建一個你想要的二維矩陣,把前面得到的rgb資訊填充進去

9樓:匿名使用者

a = imread('bird_small.png');

img_size = size(a);

x = reshape(a, img_size(1) * img_size(2), 3);

怎樣用matlab把一副彩色影象的變成資料矩陣

10樓:追逐天涯的風

提取的話簡單的很,比如說你讀入一副影象:a=imread('***.jpg');

然後提取rgb:

r=a(:,:,1);

g=a(:,:,2);

b=a(:,:,3);

就分解成rgb三個二維矩陣了版。之後就可以分別對他們做操作,權比如濾波什麼的。

最後再合併起來就行了。

a2(:,:,1)=r;

a2(:,:,2)=g;

a2(:,:,3)=b;

imshow(a2);

就成功了!

樓主 趕緊試一下吧嘿嘿

如何將matlab中多幅圖合成為一幅圖

1 首先,我們隨機產生三組範圍不同的資料,資料量都為500,他們的邊界分別為 10,15 23,38 38,58 方法如下 x1 10 5 rand 500,1 x2 23 15 rand 500,1 x3 38 20 rand 500,1 2 下面,我們要分別畫出x1,x2,x3對應的曲線,用ma...

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

小丁創業 方法和詳細的操作步驟如下 1 第一步,開啟需要處理的影象,然後編寫以下 見下圖紅框標註處,轉到下面的步驟。2 第二步,執行完上面的操作之後,可以看到影象均衡的 見下圖,轉到下面的步驟。3 第三步,執行完上面的操作之後,畫出平衡 的直方圖,在平衡前後對 進行比較,見下圖。這樣,就解決了這個問...

怎樣畫一幅簡單又好看的畫,怎樣畫好一幅簡單又漂亮的素描畫

雲南新華電腦學校 教你怎麼畫出一隻可愛的小狗如下幾個步驟 大部分人都喜歡可愛的小狗狗,但是很多人卻畫不出一隻可愛的小狗。按照下面的方法來畫出一隻可愛的小狗,你一定會給自己點贊!成品展示 一 工具 原料 a4紙水筆 二 方法 步驟 1.第一步是為整個圖畫勾勒線條。先畫出一個大圓,然後再大圓的下面畫一個...