導航:首頁 > 源碼編譯 > 顏色特徵提取演算法

顏色特徵提取演算法

發布時間:2022-07-29 12:07:30

⑴ 對一張圖片進行特徵提取的具體演算法和程序。越具體越好。感謝,例如算出圖像的形狀長寬高之類的。

對一張圖片進行特徵提取的具體演算法和程序,越具體越好,感謝例如算出圖像的形狀,長寬之類的,我覺得對圖片特徵提取的體術法並沒有什麼具體演算法,因為每個相機照出來的圖片,它的放大縮小都是不一樣的,不可能從一個圖片算出一個圖像的長寬高,只能夠算出一個大概的長寬高,如果要算出非常准確的茶膏,只能用一些紅外測距儀,還有某些特定的儀器才能構測量出,一些建築物的長寬高不能夠從一個圖片上面去算出一個建築物的長寬高的是根本沒法算出來的。

⑵ 特徵提取演算法有哪些

圖像的特徵可分為兩個層次,包括低層視覺特徵,和高級語義特徵。低層視覺特徵包括紋理、顏色、形狀三方面。語義特徵是事物與事物之間的關系。紋理特徵提取演算法有:灰度共生矩陣法,傅里葉功率譜法顏色特徵提取演算法有:直方圖法,累計直方圖法,顏色聚類法等等。形狀特徵提取演算法有:空間矩特徵等等高級語義提取:語義網路、數理邏輯、框架等方法

⑶ 如何使用Opencv對圖像進行顏色特徵提取

打開小畫家,將色卡打開,點擊吸管工具,移動滑鼠到紅色塊上方,松開滑鼠,此時,吸管工具已經提取了紅色色塊信息。然後點擊右方的「編輯顏色」,彈出顏色選擇對話框,此時,右下角有剛才習慣的紅綠藍顏色信息,如紅152,綠18,藍15。這個就是顏色對應的RGB色彩值。

創建VC控制台工程,加入所需頭文件和庫文件。注意要事先將opencv 頭文件和庫文件添加到工程屬性中,作者使用opencv2.4+VC2010示範。
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <stdio.h>
#include <vector>
#include <math.h>
#pragma comment (lib,"opencv_core244d.lib")
#pragma comment (lib,"opencv_highgui244d.lib")
#pragma comment (lib,"opencv_imgproc244d.lib")

定義一個顏色常量target,默認值即為剛才吸管工具提取的紅色色塊的RGB值分量,和一個計算與顏色標准值色差的函數,暫定為色差在10以內即為相近顏色。這里cv::Vec3b 變數對應一個數組值, Vec3b[0] 對應blue,Vec3b[1]對應green,Vec3b[2]對應Red,即BGR。

接著添加以下代碼,目的為讀取源圖片,根據圖片大小做一定的縮放,然後定義同樣大小的一個灰度圖,用於存貯計算結果值。核心演算法如下,遍歷源圖片,色差(與紅色色塊比較)低於30的即為需要提取的顏色值,將此像素位置記錄並寫入到灰度圖中,以黑色顯示,否則設置為白色。然後將處理前後圖片顯示出來。

實際商業應用中也是可以如法炮製的,比如下圖的葯片,大小,顏色不統一,如何提取識別黃色小葯片在何處或計算其數量呢。
筆者嘗試使用吸管工具提取其BGR值為(22,184,245),將色差由10調整為30,可以正確檢測此葯片。如圖。

⑷ 提取顏色特徵並計算熵,使用python實現


正好學到這,練下手。比較晚了,所以寫的比較簡單,不明白了明天再說

⑸ Matlab怎麼樣提取圖像的顏色特徵,非常

如果你是指rgb顏色層的話 use football as an example
I=imread('football.jpg');
color=I;
R=(:,:1);
G=(:,:,2);
B=(:,:,3);
然後你就得到了分別這三個顏色層的信息,這時候你可以根據你的要求做後續的工作。

⑹ 誰有Java提取圖片特徵的演算法有的能給發一個么不勝感激

圖像的特徵可分為兩個層次,包括低層視覺特徵,和高級語義特徵。
低層視覺特徵包括紋理、顏色、形狀三方面。語義特徵是事物與事物之間的關系。
紋理特徵提取演算法有:灰度共生矩陣法,傅里葉功率譜法
顏色特徵提取演算法有:直方圖法,累計直方圖法,顏色聚類法等等。
形狀特徵提取演算法有:空間矩特徵等等
高級語義提取:語義網路、數理邏輯、框架等方法

⑺ 圖象處理顏色特徵提取的演算法和程序

參考MATLAB圖像處理工具箱

⑻ 基於dem的特徵點提取有哪些演算法

(一)特點:顏色特徵是一種全局特徵,描述了圖像或圖像區域所對應的景物的表面性質。一般顏色特徵是基於像素點的特徵,此時所有屬於圖像或圖像區域的像素都有各自的貢獻。由於顏色對圖像或圖像區域的方向、大小等變化不敏感,所以顏色特徵不能很好地捕捉圖像中對象的局部特徵。另外,僅使用顏色特徵查詢時,如果資料庫很大,常會將許多不需要的圖像也檢索出來。顏色直方圖是最常用的表達顏色特徵的方法,其優點是不受圖像旋轉和平移變化的影響,進一步藉助歸一化還可不受圖像尺度變化的影響,基缺點是沒有表達出顏色空間分布的信息。

(二)常用的特徵提取與匹配方法

⑼ 求matlab彩色圖片的顏色特徵提取演算法的代碼,和紋理特徵提取的代碼。傳統方法即可。

其實學數字圖像處理,關鍵的不是源代碼(和一般編程還是有區別的,這個是經驗之談,其實一般博導未必會編程,但是你和他說說你的方法,他一般都能切中要害),而是你能理解基於概念及適用場所。
基於顏色、紋理、形狀都屬於低層特徵,這些你理解就夠了,關鍵是對你的課題適合哪種方法來映射到高層語義上面,例如:識別物體輪廓,那可能形狀就比較適合等。
我之所以寫上面那段話,主要是我感覺你索取代碼也不說明具體要求,也就是方向不明確。
如今顏色特徵提取演算法有很多,諸如顏色直方圖、顏色矩、顏色集、顏色聚合向量、顏色相關圖等,既然你沒說,我就給個IEEE CSVT 2001的一篇關於顏色直方圖法的論文(源碼版權歸作者所有):
function colorhist = colorhist(rgb)
% CBIR_colorhist() --- color histogram calculation
% input: MxNx3 image data, in RGB
% output: 1x256 colorhistogram == (HxSxV = 16x4x4)
% as the MPEG-7 generic color histogram descriptor
% [Ref] Manjunath, B.S.; Ohm, J.-R.; Vasudevan, V.V.; Yamada, A., "Color and texture descriptors"
% IEEE Trans. CSVT, Volume: 11 Issue: 6 , Page(s): 703 -715, June 2001 (section III.B)
% check input
if size(rgb,3)~=3
error('3 components is needed for histogram');
end
% globals
H_BITS = 4; S_BITS = 2; V_BITS = 2;
%rgb2hsv可用rgb2hsi代替,見你以前的提問。
hsv = uint8(255*rgb2hsv(rgb));

imgsize = size(hsv);
% get rid of irrelevant boundaries
i0=round(0.05*imgsize(1)); i1=round(0.95*imgsize(1));
j0=round(0.05*imgsize(2)); j1=round(0.95*imgsize(2));
hsv = hsv(i0:i1, j0:j1, :);

% histogram
for i = 1 : 2^H_BITS
for j = 1 : 2^S_BITS
for k = 1 : 2^V_BITS
colorhist(i,j,k) = sum(sum( ...
bitshift(hsv(:,:,1),-(8-H_BITS))==i-1 &...
bitshift(hsv(:,:,2),-(8-S_BITS))==j-1 &...
bitshift(hsv(:,:,3),-(8-V_BITS))==k-1 ));
end
end
end
colorhist = reshape(colorhist, 1, 2^(H_BITS+S_BITS+V_BITS));
% normalize
colorhist = colorhist/sum(colorhist);

%基於紋理特徵提取灰度共生矩陣用於紋理判斷
% Calculates cooccurrence matrix
% for a given direction and distance
%
% out = cooccurrence (input, dir, dist, symmetric);
%
% INPUT:
% input: input matrix of any size
%
% dir: direction of evaluation
% "dir" value Angle
% 0 0
% 1 -45
% 2 -90
% 3 -135
% 4 -180
% 5 +135
% 6 +90
% 7 +45
%
% dist: distance between pixels
%
% symmetric: 1 for symmetric version
% 0 for non-symmetric version
%
% eg: out = cooccurrence (input, 0, 1, 1);
% Author: Baran Aydogan (15.07.2006)
% RGI, Tampere University of Technology
% [email protected]

function out = cooccurrence (input, dir, dist, symmetric);

input = round(input);
[r c] = size(input);

min_intensity = min(min(input));
max_intensity = max(max(input));

out = zeros(max_intensity-min_intensity+1);
if (dir == 0)
dir_x = 0; dir_y = 1;
end

if (dir == 1)
dir_x = 1; dir_y = 1;
end

if (dir == 2)
dir_x = 1; dir_y = 0;
end

if (dir == 3)
dir_x = 1; dir_y = -1;
end

if (dir == 4)
dir_x = 0; dir_y = -1;
end

if (dir == 5)
dir_x = -1; dir_y = -1;
end

if (dir == 6)
dir_x = -1; dir_y = 0;
end

if (dir == 7)
dir_x = -1; dir_y = 1;
end

dir_x = dir_x*dist;
dir_y = dir_y*dist;

out_ind_x = 0;
out_ind_y = 0;

for intensity1 = min_intensity:max_intensity
out_ind_x = out_ind_x + 1;
out_ind_y = 0;

[ind_x1 ind_y1] = find (input == intensity1);
ind_x1 = ind_x1 + dir_x;
ind_y1 = ind_y1 + dir_y;

for intensity2 = min_intensity:max_intensity
out_ind_y = out_ind_y + 1;

[ind_x2 ind_y2] = find (input == intensity2);

count = 0;

for i = 1:size(ind_x1,1)
for j = 1:size(ind_x2,1)
if ( (ind_x1(i) == ind_x2(j)) && (ind_y1(i) == ind_y2(j)) )
count = count + 1;
end
end
end

out(out_ind_x, out_ind_y) = count;

end
end

if (symmetric)

if (dir < 4)
dir = dir + 4;
else
dir = mod(dir,4);
end
out = out + cooccurrence (input, dir, dist, 0);
end

閱讀全文

與顏色特徵提取演算法相關的資料

熱點內容
手中的app如何隱藏 瀏覽:1001
安卓什麼壁紙軟體號 瀏覽:436
java設置內存大小 瀏覽:434
php循環匹配 瀏覽:323
技巧pdf 瀏覽:479
單片機斷程序怎麼解決 瀏覽:160
如何製作APP的圖片 瀏覽:506
php大小排序 瀏覽:548
linuxkerberos 瀏覽:126
暗黑破壞神3如何下載亞洲伺服器 瀏覽:953
linux中ftp伺服器地址怎麼看 瀏覽:438
ansys命令流do 瀏覽:122
單片機6502 瀏覽:765
自助洗車有什麼app 瀏覽:937
程序員離職率多少 瀏覽:322
程序員那麼可愛電視劇今天沒更新 瀏覽:337
我的世界地形演算法 瀏覽:344
台灣dns的伺服器地址雲空間 瀏覽:288
音樂噴泉軟體要什麼加密狗 瀏覽:501
androidhttpmime 瀏覽:774