Re: 關於這段code是如何達到顯示color histogram的?已回收

看板MATLAB作者 (transpotting)時間15年前 (2010/05/14 17:11), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串3/4 (看更多)
感謝回答,不過我也才發現原來這邊做了顏色加權和轉灰階的動作? : hist(:,:) = floor(double(array(:,:,1))/64)*16 + : floor(double(array(:,:,2))/64)*4 + : floor(double(array(:,:,3))/64); 如果我只是要單純取得RGB三種顏色的color histogram 應該要怎樣改寫才行呢? ※ 引述《DigiPrince (幻無影)》之銘言: : function hist = gethist(file_name, type) %% 定義取得質方圖的函式get_hist? : firstframe = imread(file_name); %% 不是很了解firstframe的功能? : hist = get_hist(firstframe, type); %% 是為了定義的get_hist可以read image? : end : function color_hist = get_hist(array, type) %% 將color_hist這個函式的結果傳給取 : %% 得質方圖的函式get_hist? : ss = size(array); : hist = zeros(ss(1),ss(2)); %% 基本上就是 hist = zeros(size(array)); : if type == 'RGB' %% 建立一個跟 array 一樣大的零矩陣 : % use 64 (4*4*4) bins to do histogram : hist(:,:) = floor(double(array(:,:,1))/64)*16 + : floor(double(array(:,:,2))/64)*4 + : floor(double(array(:,:,3))/64); : color_hist = zeros(1,64); : %% 上面四行直接看成 RGB 轉 Grayscale : %% 應該會比較好理解 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 71.95.57.98

05/14 17:58, , 1F
如果是我會用 hist 或 histc,程式會簡單很多。
05/14 17:58, 1F

05/14 18:03, , 2F
補充一點,建議不要用 type, hist, i 這些已經是函數名
05/14 18:03, 2F

05/14 18:04, , 3F
或是已經代表某個值 (i 代表虛數) 的詞來當變數名.
05/14 18:04, 3F

05/14 21:05, , 4F
假設是 24bit RGB 在乾淨環境下 img = imread(fname);
05/14 21:05, 4F

05/14 21:05, , 5F
然後 hist(reshape(img(:,:,1),1,[]),0:255);
05/14 21:05, 5F

05/14 21:06, , 6F
就拿到紅色的 histogram 了
05/14 21:06, 6F

05/15 02:36, , 7F
直接RGB做出來的結果比較不符合視覺感觀(好像是)
05/15 02:36, 7F

05/15 04:09, , 8F
其實不會啦... 看用途囉!很多繪圖軟體都有分色 hist.
05/15 04:09, 8F
文章代碼(AID): #1BxHEvNF (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1BxHEvNF (MATLAB)