matlab常用的一些程序和功能


~ 去除誤匹配算法(matlab)

1.ransac算法

[tform,matchedPoints1,matchedPoints2] = ...
    estimateGeometricTransform(matchedPoints1,matchedPoints2,'similarity','MaxDistance',100);

2.MSAC算法

[tform,matchedPoints1,matchedPoints2] = ...
    estimateGeometricTransform(matchedPoints1,matchedPoints2,'similarity','MaxDistance',100);

 

~ matlab打開並行池,以下程序可以當做函數來做以后調用

function [] = startMatlabPool(size)  
p = gcp('nocreate');   %獲取現在並行池情況
if isempty(p)    %如果並行池是空的
    poolsize = 0;     
else      
    poolsize = p.NumWorkers    %p.NumWorkers表示的是計算機核數(如果並行池已經完全打開的話)
end  
 
if poolsize == 0  
    if nargin == 0  % nargin 針對當前正在執行的函數,返回函數調用中給定函數輸入參數的數目。該語法僅可在函數體內使用。
        parpool('local'); 
    else  
        try  
            parpool('local',size);  %使用parpool('local',size)來創建
        catch ce  
            parpool;  
            fail_p = gcp('nocreate');  
            fail_size = fail_p.NumWorkers;  
            display(ce.message);  
            display(strcat('輸入的size不正確,采用的默認配置size=',num2str(fail_size)));  
        end  
    end  
else   
    display('parpool start');  
    if poolsize ~= size   % 如果所給核心數與已經運行的核心數不同,則關閉並行池並重新打開並行池
        closematlabpool();  
        startmatlabpool(size);  
    end  
end

 

~ 關閉並行池

function [] = closeMatlabPool  
   poolobj = gcp('nocreate');  
   delete(poolobj);  
end

~ 更詳細的解釋可以看以下網頁

http://blog.csdn.net/dang_wang/article/details/35553953

 

~ 找二值圖像的連通區域

L = bwlabel(BW,n)
    返回一個和BW大小相同的L矩陣,包含了標記了BW中每個連通區域的類別標簽,這些標簽的值為1、2、num(連通區域的個數)。n的值為4或8,表示是按4連通尋找區域,還是8連通尋找,默認為8。

[L,num] = bwlabel(BW,n)這里num返回的就是BW中連通區域的個數。

 舉例說明:
    BW =
    1     1     1     0     0     0     0     0
    1     1     1     0     1     1     0     0
    1     1     1     0     1     1     0     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     1     1     0
    1     1     1     0     0     0     0     0

    按4連通計算,方形的區域,和翻轉的L形區域,有用是對角連接,不屬於連通,所以分開標記,連通區域個數為3,就是有3個不同的連接區域。
    L = bwlabel(BW,4)
    結果如下:
    L =
    1     1     1     0     0     0     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     3     3     0
    1     1     1     0     0     0     0     0

    而8連通標記,它們是連通的:
    [L, num] = bwlabel(BW,8)
    L =
    1     1     1     0     0     0     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     2     2     0
    1     1     1     0     0     0     0     0

 

~ 返回滿足某個條件的元素/像素個數

 

n = numel(A);

 

n=  numel(A,條件);

 

返回數組A中元素個數。若是一幅圖像,則numel(A)將給出它的像素數。

 

示例:

 

 


 

 

~ 將滿足某個條件的區域像素去除(將以上兩個進行合並應用)

[L num] = bwlabel(bw);

for i=1:num

  if numel(find(L==i)) < 1200

    bw(L==i) = 0;

  end

end

 

~ 閾值面積消去

imageThresholdMorphology = bwareaopen(imageThreshold,15,4);%把白像素小於某個值的像素數去掉,其中15代表連通的像素個數,4代表聯通度

 

~ 常用的一些對區域的處理算法

1、 matlab函數bwareaopen──刪除小面積對象
格式:BW2 = bwareaopen(BW,P,conn)
作用:刪除二值圖像BW中面積小於P的對象,默認情況下使用8鄰域。
算法:
(1)Determine the connected components.
  L = bwlabeln(BW, conn);
(2)Compute the area of each component.
  S = regionprops(L, 'Area');
(3)Remove small objects.
  bw2 = ismember(L, find([S.Area] >= P));

2、matlab函數bwarea──計算對象面積
格式:total = bwarea(BW)
作用:估計二值圖像中對象的面積。
注:該面積和二值圖像中對象的像素數目不一定相等。

3、matlab函數imclearborder──邊界對象抑制
格式:IM2 = imclearborder(IM,conn)
作用:抑制和圖像邊界相連的亮對象。若IM是二值圖,imclearborder將刪除和圖像邊界相連的對象。默認情況conn=8。
注:For grayscale images, imclearborder tends to reduce the overall intensity level in addition to suppressing border structures.
算法:
(1)Mask image is the input image.
(2)Marker image is zero everywhere except along the border, where it equals the mask image.

4、matlab函數bwboundaries──獲取對象輪廓
格式:B = bwboundaries(BW,conn)(基本格式)
作用:獲取二值圖中對象的輪廓,和OpenCV中cvFindContours函數功能類似。B是一個P×1的cell數組,P為對象個數,每個cell 是Q×2的矩陣,對應於對象輪廓像素的坐標。

5、matlab函數imregionalmin──獲取極小值區域
格式:BW = imregionalmin(I,conn)
作用:尋找圖像I的極小值區域(regional maxima),默認情況conn=8。
Regional minima are connected components of pixels with a constant intensity value, and whose external boundary pixels all have a higher value.


6、matlab函數bwulterode──距離變換的極大值
格式:BW2 = bwulterode(BW,method,conn)
作用:終極腐蝕。尋找二值圖像BW的距離變換圖的區域極大值(regional maxima)。用於距離變換的距離默認為euclidean,連通性為8鄰域。

7、regionprops統計被標記的區域的面積分布,顯示區域總數。
函數regionprops語法規則為:STATS = regionprops(L,properties)
該函數用來測量標注矩陣L中每一個標注區域的一系列屬性。
L中不同的正整數元素對應不同的區域,例如:L中等於整數1的元素對應區域1;L中等於整數2的元素對應區域2;以此類推。

返回值STATS是一個 長度為max(L(:))的結構數組,結構數組的相應域定義了每一個區域相應屬性下的度量。

Properties可以是由逗號分割的字符串列表、包含字符 串的單元數組、單個字符串'all'或者'basic'。如果properties等於字符串'all',則表4.1中的度量數據都將被計算;如果properties等於字符串'basic',則屬性:'Area','Centroid'和'BoundingBox'將被計算。表1就是所有有效的屬性字符串。

表1 屬性字符串列表----度量圖像區域的屬性或功能
'Area' 圖像各個區域中像素總個數
'BoundingBox'  包含相應區域的最小矩形
'Centroid' 每個區域的質心(重心)
'MajorAxisLength' 與區域具有相同標准二階中心矩的橢圓的長軸長度(像素意義下)
'MinorAxisLength' 與區域具有相同標准二階中心矩的橢圓的短軸長度(像素意義下)
'Eccentricity' 與區域具有相同標准二階中心矩的橢圓的離心率(可作為特征)
'Orientation' 與區域具有相同標准二階中心矩的橢圓的長軸與x軸的交角(度)
'Image' 與某區域具有相同大小的邏輯矩陣
'FilledImage' 與某區域具有相同大小的填充邏輯矩陣
'FilledArea' 填充區域圖像中的on像素個數
'ConvexHull' 包含某區域的最小凸多邊形
'ConvexImage' 畫出上述區域最小凸多邊形
'ConvexArea'   填充區域凸多邊形圖像中的on像素個數
'EulerNumber' 幾何拓撲中的一個拓撲不變量——歐拉數
'Extrema' 八方向區域極值點
'EquivDiameter' 與區域具有相同面積的圓的直徑
'Solidity' 同時在區域和其最小凸多邊形中的像素比例
'Extent' 同時在區域和其最小邊界矩形中的像素比例
'PixelIdxList' 存儲區域像素的索引下標
'PixelList' 存儲上述索引對應的像素坐標

 

~ 填充空洞

填充圖像區域和“空洞”。
語法格式:
BW2 = imfill(BW)
這種格式將一張二值圖像顯示在屏幕上, 允許用戶使用鼠標在圖像上點幾個點, 這幾個點圍成的區域即要填充的區域。要以這種交互方式操作,
BW必須是一個二維的圖像。用戶可以通過按Backspace鍵或者Delete鍵來取消之前選擇的區域;通過shift+鼠標左鍵單擊或者鼠標右鍵單擊或雙擊可以確定選擇區域。
[BW2,locations] = imfill(BW)
這種方式, 將返回用戶的取樣點索引值。注意這里索引值不是選取樣點的坐標。
BW2 = imfill(BW,locations)
這種格式允許用戶編程時指定選取樣點的索引。locations是個多維數組時, 數組每一行指定一個區域。
BW2 = imfill(BW,'holes')
填充二值圖像中的空洞區域。 如, 黑色的背景上有個白色的圓圈。 則這個圓圈內區域將被填充。
I2 = imfill(I)
這種調用格式將填充灰度圖像中所有的空洞區域

~ 常用的模板匹配算法(MAD,SAD,SSD,MSD,NCC,SSDA)

http://www.bubuko.com/infodetail-1049139.html

 

~ 卷積操作 conv2,具體解釋見如下網頁

http://blog.csdn.net/tina_ttl/article/details/51034809

 

~ matlab EMD工具箱的安裝

https://blog.csdn.net/qrlhl/article/details/52213135

 

~ matlab常用工具箱匯總見

https://www.cnblogs.com/Hand-Head/articles/5168534.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM