MATLAB SVM的一些問題

2021-10-10 09:24:16 字數 1963 閱讀 7528

%%

tic;

close all;

% clear;

clc;

format compact;

%%pic = imread(『d:\road.png』); %匯入

figure;

imshow(pic);

%% 確定訓練集

traindata_background = zeros(20,3,『double』);

traindata_foreground = zeros(20,3,『double』);

% 背景取樣

msgbox(『請選擇20個背景樣本點』,『background samples』,『help』);

pause;

for run = 1:20

[x,y] = ginput(1); %ginput函式直接提取畫素點

hold on;

plot(x,y,『r*』);

x = uint16(x);

y = uint16(y);

traindata_background(run,1) = pic(x,y,1);

traindata_background(run,2) = pic(x,y,2);

traindata_background(run,3) = pic(x,y,3);

end% 待分割出來的前景取樣

msgbox(『請選擇20個前景樣本點』,『foreground samples』,『help』);

pause;

for run = 1:20

[x,y] = ginput(1);

hold on;

plot(x,y,『ro』);

x = uint16(x);

y = uint16(y);

traindata_foreground(run,1) = pic(x,y,1);

traindata_foreground(run,2) = pic(x,y,2);

traindata_foreground(run,3) = pic(x,y,3);

end% let background be 0 & foreground 1

trainlabel = [zeros(length(traindata_background),1); …

ones(length(traindata_foreground),1)];

%% 建立支援向量機 基於libsvm

traindata = [traindata_background;traindata_foreground];

model = svmtrain(trainlabel, traindata, 『-t 1 -d 1』);

%% 進行** i.e.進行影象分割 基於libsvm

pretrainlabel = svmpredict(trainlabel, traindata, model);

[m,n,k] = size(pic);

testdata = double(reshape(pic,m*n,k));

testlabal = svmpredict(zeros(length(testdata),1), testdata, model);

%%ind = reshape([testlabal,testlabal,testlabal],m,n,k);

ind = logical(ind);

pic_seg = pic;

pic_seg(~ind) = 0;

figure;

imshow(pic_seg);

figure;

subplot(1,2,1);

imshow(pic);

subplot(1,2,2);

imshow(pic_seg);

這是基於某博主發的svm影象分割的一篇帖子 我做了幾個小改動 但有些涵義還是不太懂 不知道有沒有大神可以聯絡我進一步解答 會有一些心意表示 不會白費辛苦

String 一些問題

前言 等號 對於基本型別,比較的是值,對於引用型別,比較的是記憶體位址。1.在物件池中建立,如果常量池中已經存在則返回常量池中已經有的。private static void test1 結果 true 2.乙個在string pool中,乙個在堆中。private static void test...

C 一些問題

1 if else語句和switch case語句的效率分析對比 switch效率高。switch的效率與分支數無關,當只有分支比較少的時候,if效率比switch高,因為switch有跳轉表。分支比較多,那當然是switch 根據大量的實際程式測試 不考慮不同的編譯器優化程度差異,假設都是最好的優...

mysql 一些問題

1 中文亂碼 問題 推薦用 uft 8 編碼 適配一切介面,mysql中 發生中文亂碼時 開啟mysql 安裝路徑 更改後 重啟mysql 服務即可,有時也需要 重新匯入資料庫 可能是與 source 檔案時 編碼沒有設定好 client password your password port 33...