%%
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...