亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? readme.txt

?? markov random field in matlab code
?? TXT
字號(hào):
**************************************************
* MRF energy minimization software               *
* Version 1.6                                    *
* May 5, 2006                                    *
**************************************************

This directory contains the MRF energy minimization software accompanying the paper

  [1] A Comparative Study of Energy Minimization Methods for Markov Random Fields.
      R. Szeliski, R. Zabih, D. Scharstein, O. Veksler, V. Kolmogorov,
      A. Agarwala, M. Tappen, and C. Rother.
      In Ninth European Conference on Computer Vision (ECCV 2006),
      volume 2, pages 16-29, Graz, Austria, May 2006.

Optimization methods included:
1) ICM
2) Graph Cuts
3) Max-Product Belief Propagation

The TRW / TRW-S method is currently not included, but hopefully will be in a future version.

Instructions for compiling and using the software are included below.

CREDITS:
* MRF code, graph cut interface, and example code by Olga Veksler
* Graph cut library by Yuri Boykov and Vladimir Kolmogorov
* Belief propagation code by Marshall Tappen


================================ INSTRUCTIONS FOR CITATIONS ========================

If you use this software, you should cite the paper [1].  In addition, since this
software builds on the algorithms and libraries developed by many different people, you
should also follow the instructions about proper citing below.

(a) If you use the GraphCuts optimization (written by Olga Veksler, using the libraries
    provided by Yuri Boykov and Vladimir Kolmogorov), you should cite the following papers:      
      
    [2] Fast Approximate Energy Minimization via Graph Cuts.
        Y. Boykov, O. Veksler, and R. Zabih.
        In IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 
        vol. 23, no. 11, pages 1222-1239, November 2001. 

    [3] What Energy Functions can be Minimized via Graph Cuts?
        V. Kolmogorov and R. Zabih. 
        In IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI),
        vol. 26, no. 2, pages 147-159, February 2004. 
        An earlier version appeared in European Conference on Computer Vision (ECCV), May 2002. 

    [4] An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Vision.
        Y. Boykov and Vladimir Kolmogorov.
        In IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 
        vol. 26, no. 9, pages 1124-1137, September 2004. 

    The graph-cuts software  can be used only for research purposes. If you wish to use the graph-cuts software 
    for commercial purposes, you should be aware that there is a US patent: 

        R. Zabih, Y. Boykov, O. Veksler 
        "System and method for fast approximate energy minimization via graph cuts", 
        United Stated Patent 6,744,923, June 1, 2004

    Citation [2] develops the graph-cuts algorithms (alpha-expansion and the swap algorithms), citation [3] 
    gives a simpler graph construction for the methods described in [2], and citation [3] gives an efficient
    min-cut/max-flow algorithm for computing the minimum graph cut.
  
    The file energy.h included here is a slight modification of the file energy.h
    in energy-v1.1.src by Vladimir Kolmogorov, available at
    http://www.adastral.ucl.ac.uk/~vladkolm/software.html

    The files block.h, graph.cpp, graph.h, and maxflow.cpp included here are slight modifications
    of the files in maxflow-v2.2.src/forward_star, by Vladimir Kolmogorov and Yuri Boykov, available at
    http://www.adastral.ucl.ac.uk/~vladkolm/software.html

(b) If you are using the Belief Propagation software (provided by Marshall Tappen), you should cite

    [5] M. F. Tappen and W. T. Freeman.
        Comparison of Graph Cuts with Belief Propagation for Stereo, using Identical MRF Parameters.
        In Proceedings of the Ninth IEEE International Conference on Computer Vision (ICCV),
        pages 900-907, 2003


============================= INSTRUCTIONS FOR USAGE =============================================

A simple Makefile is included - typing "make" will compile the library
and a sample driver file "example.cpp" into an executable "example".


Here is a brief description of how to use the code; see also example.cpp and mrf.h.


The default type for energy is float. If you want to change this type to other numerical
type, such as int, double, etc., in mrf.h, change the following 2 lines to the desired type:

typedef int EnergyVal;        /* The total energy of a labeling */
typedef int CostVal;          /* costs of individual terms of the energy */

Note that CostVal is the type of individual energy terms (such as the data cost for pixel p and label l),
and EnergyVal is the type for the total energy value. Therefore, the sum of all individual energy terms
should not "overflow" the EnergyVal type.

Step 1: Set up an energy function
   An energy function is specified by setting data costs and smoothness costs. Data costs and smoothness
   costs can be specified by an array or function. In addition, smoothness cost can be specified by 
   parameters lambda, k, V_max, as explained in section 2 of paper [1], in which case the smoothness
   cost V(|l1-l2|) = lambda*min(V_max,|l1-l2|^k). Spatially varying per-pairing weights w_pq can be also specified.
   
   (a) Setting up Data Terms
       There are 2 ways to set up data terms: 
       (i)  you can allocate an array dCost of size (numberofPixels)*(numberofLabels) of the CostVal type,
            where dCost[pix*numberofLabels + l] is the cost of assigning label l to pixel pix
       (ii) or you can set up a function 
            MRF::CostVal dCost(int pix, int i), which takes pixel pix and label i and returns the data cost

       After you initialized data cost array, or setup a function data cost, to initialize data cost
       for optimization, call: 
              
       DataCost *data = new DataCost(dCost);

   (b) Setting up Smoothness Terms
       There are 3 ways to set up smoothness terms:
       (i)   Set up a symmetric array smooth of size numberofLabels*numberofLabels, 
             where V(l1,l2) = smooth[l1+numberofLabels*l2] = smooth[l2+numberofLabels*l1]
       (ii)  Specify V_max and k 
       (iii) The most general way is to set up afunction 
             MRF::CostVal fnCost(int pix1, int pix2, int i, int j) which takes pixels pix1 and pix2, 
             labels i and j and returns the smoothness penalty V for assigning labels i to pix1 and j to pix2. 
 
      In addition, if you used (i) or (ii) to specify the smoothness penalty V, and if the neighborhood system
      is the standard 4 connected grid, you can specify the spacial varying weights w_pq in arrays vCue, hCue,
      each of which has size width*height, where width is the width of the grid and height is the height of
      the set of the grid.  hCue[x+y*width] holds the variable weight for edge between pixels (x+1,y) and (x,y)
      and vCue[x+y*width] holds the variable weight for edge between pixels (x,y+1) and (x,y)
    
      After you've done steps (i), or (ii), or (iii), to initialize smoothness cost
      for optimization, call: 
         In case of (i) and NO spacially varying weights w_pq:  SmoothnessCost *smooth = new SmoothnessCost(smooth);
         In case of (i) and spacially varying weights w_pq:     SmoothnessCost *smooth = new SmoothnessCost(smooth,hCue,vCue);
             Note that in this case, V(pix1,pix2,l1,l2) = smooth[l1+l2*numofLabels]*hCue[min(pix1,pix2)] if pix1 and pix2
             are horizontal neighbors, and  V(pix1,pix2,l1,l2) = smooth[l1+l2*numofLabels]*vCue[min(pix1,pix2)] 
             if pix1 and pix2 are vertical neighbors
 
         In case of (ii) and NO spacially varying weights w_pq: SmoothnessCost *smooth = new SmoothnessCost(k,V_max,lambda);
         In case of  (ii) and spacially varying weights w_pq:   SmoothnessCost *smooth = new SmoothnessCost(k,V_max,lambda,hCue,vCue);
             Note that in this case, V(pix1,pix2,l1,l2) = lambda*min(V_max,|l1-l2]^k)*hCue[min(pix1,pix2)] if pix1 and pix2
             are horizontal neighbors, and  V(pix1,pix2,l1,l2) = lambda*min(V_max,|l1-l2]^k)*vCue[min(pix1,pix2)] 
             if pix1 and pix2 are vertical neighbors

         In case of (iii): SmoothnessCost *smooth = new SmoothnessCost(fnCost); 

     After the data and smoothness terms are set-up, the energy can be specified by calling,
     EnergyFunction *eng    = new EnergyFunction(data,smooth);

      Note that we directly use all the arrays that you make, that is we do not copy them. So don't free any memory
      in the arrays that you allocate until you are done with optimization.      

Step 2: Invoke an optimization algorithm, assuming the grid has dimensions width by height, and number of labels is numberOfLabels, and
eng is set up as above:

For ICM:
    float t;
    MRF* mrf = new ICM(width,height,numberOfLabels,eng);
    mrf->initialize();  
    mrf->clearAnswer();
    mrf->optimize(5,t);  // run for 5 iterations, store time t it took 
    MRF::EnergyVal E_smooth = mrf->smoothnessEnergy();
    MRF::EnergyVal E_data   = mrf->dataEnergy();
    printf("Total Energy = %d (Smoothness energy %d, Data Energy %d)\n", E_smooth+E_data,E_smooth,E_data);
    for (int pix =0; pix < width*height; pix++ ) printf("Label of pixel %d is %d",pix, mrf->getLabel(pix));
    delete mrf;


For Graph-cuts with expansion algorithm:
    float t;
    MRF* mrf = new Expansion(width,height,numberOfLabels,eng);
    mrf->initialize();  
    mrf->clearAnswer();
    mrf->optimize(5,t);  // run for 5 iterations, store time t it took 
    MRF::EnergyVal E_smooth = mrf->smoothnessEnergy();
    MRF::EnergyVal E_data   = mrf->dataEnergy();
    printf("Total Energy = %d (Smoothness energy %d, Data Energy %d)\n", E_smooth+E_data,E_smooth,E_data);
    for (int pix =0; pix < width*height; pix++ ) printf("Label of pixel %d is %d",pix, mrf->getLabel(pix));
    delete mrf;

For Graph-cuts with swap algorithm:
    float t;
    MRF* mrf = new Swap(width,height,numberOfLabels,eng);
    mrf->initialize();  
    mrf->clearAnswer();
    mrf->optimize(5,t);  // run for 5 iterations, store time t it took 
    MRF::EnergyVal E_smooth = mrf->smoothnessEnergy();
    MRF::EnergyVal E_data   = mrf->dataEnergy();
    printf("Total Energy = %d (Smoothness energy %d, Data Energy %d)\n", E_smooth+E_data,E_smooth,E_data);
    for (int pix =0; pix < width*height; pix++ ) printf("Label of pixel %d is %d",pix, mrf->getLabel(pix));
    delete mrf;

For Max-product Belief Propagation:
    float t;
    MRF* mrf = new MaxProdBP(width,height,numberOfLabels,eng);
    mrf->initialize();  
    mrf->clearAnswer();
    mrf->optimize(5,t);  // run for 5 iterations, store time t it took 
    MRF::EnergyVal E_smooth = mrf->smoothnessEnergy();
    MRF::EnergyVal E_data   = mrf->dataEnergy();
    printf("Total Energy = %d (Smoothness energy %d, Data Energy %d)\n", E_smooth+E_data,E_smooth,E_data);
    for (int pix =0; pix < width*height; pix++ ) printf("Label of pixel %d is %d",pix, mrf->getLabel(pix));
    delete mrf;


The above code works for grid graphs. Currently, the graph cuts algorithms (swap and expansion)  are also 
implemented for general neighborhood systems, in which case 
after specifying energy you also have to specify the neighborhood system using function: 
    mrf->setNeighbors(int pix1, int pix2, CostVal weight); 
which makes pix1 and pix2 neighbors with spacially varying weight. Note that in this case, you can't use hCue and vCue, 
when setting up the smoothness terms, since they only work for 4-connected grid. Also, if you use general neighborhood 
system, you have to use a different constructor:

For Graph-cuts with expansion algorithm:
    float t;
    MRF* mrf = new Expansion(numberofPixels,numberOfLabels,eng);
    
    for (int i = 0; i <numberofPixels; i++ )     // this nested loop sets up a full neighborhood system
        for ( j = 0; j < numberofPixels; j++ )   // with weights w_pq= (p-q)^2        
            mrf->setNeighbors(i,j, (i-j)*(i-j));

    mrf->initialize();  
    mrf->clearAnswer();
    mrf->optimize(5,t);  // run for 5 iterations, store time t it took 
    MRF::EnergyVal E_smooth = mrf->smoothnessEnergy();
    MRF::EnergyVal E_data   = mrf->dataEnergy();
    printf("Total Energy = %d (Smoothness energy %d, Data Energy %d)\n", E_smooth+E_data,E_smooth,E_data);
    for (int pix =0; pix < width*height; pix++ ) printf("Label of pixel %d is %d",pix, mrf->getLabel(pix));
    delete mrf;
     

For Graph-cuts with swap algorithm:
    float t;
    MRF* mrf = new Swap(numberofPixels,numberOfLabels,eng);
    
    for (int i = 0; i <numberofPixels; i++ )     // this nested loop sets up a full neighborhood system
        for ( j = 0; j < numberof Pixels; j++ )  // with weights w_pq= (p-q)^2        
            mrf->setNeighbors(i,j, (i-j)*(i-j));

    mrf->initialize();  
    mrf->clearAnswer();
    mrf->optimize(5,t);  // run for 5 iterations, store time t it took 
    MRF::EnergyVal E_smooth = mrf->smoothnessEnergy();
    MRF::EnergyVal E_data   = mrf->dataEnergy();
    printf("Total Energy = %d (Smoothness energy %d, Data Energy %d)\n", E_smooth+E_data,E_smooth,E_data);
    for (int pix =0; pix < width*height; pix++ ) printf("Label of pixel %d is %d",pix, mrf->getLabel(pix));
    delete mrf;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国偷自产一区二区三区观看| 一区二区三区**美女毛片| 韩国一区二区在线观看| 欧美亚洲一区二区在线观看| 日韩精品1区2区3区| 国产精品天天看| 6080国产精品一区二区| 成人蜜臀av电影| 毛片一区二区三区| 一区二区欧美国产| 在线成人av网站| 日本高清不卡视频| 成人免费av在线| 国产成人日日夜夜| 日韩av网站免费在线| 亚洲精品五月天| 国产精品卡一卡二| 亚洲国产成人在线| 久久综合久久综合久久综合| 欧美三级在线视频| 91免费视频网址| 国产成人久久精品77777最新版本| 国产精品资源站在线| www.成人在线| 国产91精品久久久久久久网曝门| 人人狠狠综合久久亚洲| 一二三四社区欧美黄| 中文字幕色av一区二区三区| 2023国产精品视频| 欧美日韩免费高清一区色橹橹| 成人av在线播放网址| 成人性生交大片免费看中文网站| 日韩国产欧美在线观看| 亚洲高清久久久| 亚洲特级片在线| 亚洲欧美色一区| 亚洲一区二区三区在线| 亚洲一区二区三区视频在线播放| 亚洲国产cao| 亚洲精品久久嫩草网站秘色| 极品销魂美女一区二区三区| 盗摄精品av一区二区三区| 国产精品不卡在线观看| 国产精品久久久久久久久搜平片 | 精品国产乱子伦一区| 日韩一级免费观看| 精品入口麻豆88视频| 久久综合五月天婷婷伊人| 久久久另类综合| 欧美国产日本视频| 亚洲综合激情另类小说区| 亚洲一区二区三区美女| 亚洲一区av在线| 看片的网站亚洲| 成人午夜电影网站| 在线免费观看日韩欧美| 久久av中文字幕片| 91视频免费播放| 欧美三级韩国三级日本三斤 | 国产欧美日韩麻豆91| 日韩高清不卡在线| 在线观看成人小视频| 中文字幕中文在线不卡住| 国产精品亚洲专一区二区三区| 91麻豆精品国产综合久久久久久 | 麻豆国产一区二区| 6080午夜不卡| 蜜臀精品久久久久久蜜臀| 国产999精品久久久久久绿帽| 欧美xxxx在线观看| 蜜臀久久99精品久久久画质超高清 | 精品制服美女丁香| 欧美日韩一区二区在线观看| 一区视频在线播放| 成人av在线资源网| 亚洲免费在线电影| 一本在线高清不卡dvd| 日韩一区在线免费观看| 91在线高清观看| 亚洲黄网站在线观看| 91猫先生在线| 视频一区免费在线观看| 欧美精选午夜久久久乱码6080| 首页综合国产亚洲丝袜| 欧美一区二区三区四区久久| 首页国产丝袜综合| 精品国产人成亚洲区| 国产成人精品三级麻豆| 国产精品久久久久久久久免费桃花 | 91精品啪在线观看国产60岁| 午夜精品一区二区三区电影天堂| 91麻豆精品久久久久蜜臀| 蜜臀精品一区二区三区在线观看 | 亚洲综合丁香婷婷六月香| 欧美中文字幕一区| 蜜桃一区二区三区在线| 久久欧美中文字幕| 97久久精品人人做人人爽| 亚洲影视在线观看| 日韩欧美高清一区| 成人免费观看av| 亚洲四区在线观看| 欧美一区二区三区播放老司机| 国产在线精品视频| 亚洲欧美日韩系列| 欧美高清你懂得| 91福利国产精品| 日本午夜一本久久久综合| 日韩美女视频一区二区在线观看| 国产成人在线网站| 亚洲第一激情av| 久久人人爽爽爽人久久久| 99久久精品免费精品国产| 日韩精品乱码免费| 国产精品国产三级国产a| 欧美一卡二卡三卡| 91麻豆国产福利精品| 精品制服美女丁香| 亚洲免费观看高清在线观看| 欧美精品视频www在线观看| 国产电影精品久久禁18| 午夜视频一区二区| 亚洲视频图片小说| 久久蜜桃av一区精品变态类天堂 | 97久久久精品综合88久久| 美女视频黄免费的久久 | 国产伦精品一区二区三区视频青涩 | 国产91综合一区在线观看| 日韩av电影免费观看高清完整版在线观看| 久久九九全国免费| 欧美一区二区三区白人| 欧美少妇性性性| 97久久精品人人做人人爽50路| 国产精品一级片| 天天av天天翘天天综合网| 亚洲视频在线观看一区| 久久综合国产精品| 精品福利在线导航| 欧美精品三级在线观看| 色呦呦国产精品| eeuss影院一区二区三区 | 精品久久久久久久久久久久包黑料 | 91国产丝袜在线播放| 国产一区二区不卡在线| 免费在线观看一区| 天天射综合影视| 亚洲香蕉伊在人在线观| 亚洲色图另类专区| 国产精品妹子av| 欧美国产成人在线| 国产日韩欧美精品在线| 精品国产凹凸成av人网站| 精品美女一区二区| 精品国免费一区二区三区| 欧美成人一区二区三区片免费| 日韩三区在线观看| 欧美电视剧免费观看| 欧美mv日韩mv亚洲| 久久嫩草精品久久久久| 久久毛片高清国产| 国产精品国产三级国产a| 亚洲视频 欧洲视频| 亚洲色图欧美偷拍| 成人免费高清在线观看| 国产精品进线69影院| 欧美激情中文不卡| 国产精品国产自产拍高清av王其| 1000部国产精品成人观看| 亚洲免费电影在线| 午夜精品影院在线观看| 毛片av一区二区| 国产91精品一区二区麻豆网站| 99国产精品久久久| 欧美美女喷水视频| 久久一二三国产| 亚洲激情六月丁香| 免费在线看一区| 成人一级视频在线观看| 欧美视频一区二区三区在线观看| 欧美久久久久久久久久| 久久久久九九视频| 色94色欧美sute亚洲线路二| 精品日韩一区二区三区| 国产成人精品1024| 色综合一区二区| 91精品在线一区二区| 欧美日韩免费观看一区二区三区 | 精品久久国产字幕高潮| 欧美国产日韩a欧美在线观看| 夜夜嗨av一区二区三区四季av| 日本不卡一区二区| 成人av在线网| 日韩午夜精品电影| 亚洲欧美国产毛片在线| 久久精品国产免费| 欧美亚洲免费在线一区| 国产亚洲一区二区三区在线观看| 亚洲一区二区av电影| 成人精品免费网站| 日韩欧美区一区二|