1. 程式人生 > >能量最小化初探,graphcuts能量最小化呼叫

能量最小化初探,graphcuts能量最小化呼叫

1.相對於能量函式來說,能量最小化的辦法都有哪些?

  梯度下降

  模擬退火

  圖割

2.這個 跟最優化問題的求解,有什麼聯絡跟區別呢?

基本上差不多,其實就是求出來了函式的一個最小值,我們看問題的時候不妨把能量二字去掉。單純的理解為函式

3.這個能量的觀點是否跟資訊熵類似,讓系統的熵最小?

其實也都差不多,都是求最小值的。

我們可以看到下面的程式碼就求出來了相關表示式,在x =0 ,y = 1, z= 1時候能夠取得最小值。

/* energy.h */
/* Vladimir Kolmogorov ([email protected]), 2003. */

/*
	This software implements an energy minimization technique described in

	What Energy Functions can be Minimized via Graph Cuts?
	Vladimir Kolmogorov and Ramin Zabih. 
	To appear in IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI). 
	Earlier version appeared in European Conference on Computer Vision (ECCV), May 2002. 

	More specifically, it computes the global minimum of a function E of binary
	variables x_1, ..., x_n which can be written as a sum of terms involving
	at most three variables at a time:

		E(x_1, ..., x_n) = \sum_{i}     E^{i}    (x_i)
		                 + \sum_{i,j}   E^{i,j}  (x_i, x_j)
		                 + \sum_{i,j,k} E^{i,j,k}(x_i, x_j, x_k)

	The method works only if each term is "regular". Definitions of regularity
	for terms E^{i}, E^{i,j}, E^{i,j,k} are given below as comments to functions
	add_term1(), add_term2(), add_term3(). 

	This software can be used only for research purposes. IF YOU USE THIS SOFTWARE,
	YOU SHOULD CITE THE AFOREMENTIONED PAPER IN ANY RESULTING PUBLICATION.

	In order to use it, you will also need a MAXFLOW software which can be
	obtained from http://www.cs.cornell.edu/People/vnk/software.html


	Example usage
	(Minimizes the following function of 3 binary variables:
	E(x, y, z) = x - 2*y + 3*(1-z) - 4*x*y + 5*|y-z|):

	///////////////////////////////////////////////////

	#include <stdio.h>
	#include "energy.h"

	void test_energy()
	{
		// Minimize the following function of 3 binary variables:
		// E(x, y, z) = x - 2*y + 3*(1-z) - 4*x*y + 5*|y-z|
		   
		Energy::Var varx, vary, varz;
		Energy *e = new Energy();

		varx = e -> add_variable();
		vary = e -> add_variable();
		varz = e -> add_variable();

		e -> add_term1(varx, 0, 1);  // add term x ,常數項為0,一次項係數為1
		e -> add_term1(vary, 0, -2); // add term -2*y
		e -> add_term1(varz, 3, 0);  // add term 3*(1-z)

		//e -> add_term2(x, y, 0, 0, 0, -4); // add term -4*x*y
		//e -> add_term2(y, z, 0, 5, 5, 0); // add term 5*|y-z|

		Energy::TotalValue Emin = e -> minimize();
		
		printf("Minimum = %d\n", Emin);
		printf("Optimal solution:\n");
		printf("x = %d\n", e->get_var(varx));
		printf("y = %d\n", e->get_var(vary));
		printf("z = %d\n", e->get_var(varz));

		delete e;
	}

	///////////////////////////////////////////////////
*/


輸出結果:

boykov跟kolmogorkov與2001年提出的一種新的最大流最小割演算法,該演算法基於增廣路演算法,通過擴充套件,標記,更新被標記的節點,形成新的搜尋樹,並不斷重複。

標準移動的定義:在進行能量函式的最優化過程中,僅改變影象中一個畫素點的視差標記值,如圖 4-2(b)示。通過這種標準移動很容易遇到區域性極小值,從而不能準確的計算出能量函式的最小值。而α 擴充套件移動則是對那些視差標記不為α 的集合同時進行大規模的優化(多個畫素同時進行標準移動),使其中的一部分畫素點的視差標記重新被標記為α ,剩餘的畫素點集合的視差標記值保持不變,如圖 4-2(c)示,視差標記為β 和γ 中的部分畫素點被重新標記為α 。而α − β交換移動則是在一次交換移動(可以理解為優化)的過程中,視差標記α 畫素點集合和視差標記為β 的畫素點集合同時大規模進行交換(swap),而那些視差標記不等於α 和β 的畫素點集合則不改變,如圖 4-2(d)示,標記為γ 的畫素集合沒有發生改變,視差標記α 畫素點集合和視差標記為β 進行了部分交換。


影象分割論文合集下載:

相關推薦

能量初探graphcuts能量呼叫

1.相對於能量函式來說,能量最小化的辦法都有哪些?   梯度下降   模擬退火   圖割 2.這個 跟最優化問題的求解,有什麼聯絡跟區別呢? 基本上差不多,其實就是求出來了函式的一個最小值,我們看問題的時候不妨把能量二字去掉。單純的理解為函式 3.這個能量的觀點是否跟資

點覆蓋二分圖大匹配—POJ1274 POJ1469 POJ1469

-s 要求 ini vector ++ %d () tin clas 二分圖最大匹配常用的匈牙利算法,之前寫的很幼稚,雖然也過了,但是平白的比別人多開了兩倍的空間。 本來就是在填加邊的時候把左邊的點和右邊的點分開算都加在圖裏面儲存,然後匹配的時候就互相匹配 match[u]

掌握這25條貼士快速提升資料視覺能力!

視覺化不是單純的資料展示,其真正價值是設計出可以被讀者輕鬆理解的資料展示。設計過程中的每一個選擇,最終都應落地於讀者的體驗,而非設計者個人。 本文提到了一些常見錯誤,也是我們團隊總結出的一些技巧。這25條小貼士能夠快速提升和鞏固你的資料視覺化設計。一起來看看! 一、原則 1. 選擇可以講故事的圖表

微信程序-----安裝編寫第一個程序和運行到手機端

alt ima 下載 weixin nload 公眾平臺 軟件 分享 微信公眾平臺 第一步: 微信公眾平臺註冊賬號,並選擇小程序,網址:mp.weixin.qq.com 填寫相關信息,如:主體類型(個人或者企業)    AppID 在開發中都是用的到的,

微信程序 | 51live新課“程序UI容器組件”的課堂計劃

scroll 記憶 mage 有一個 技術 微信小程序 content -c eve 零基礎前端自學入門:小程序UI容器組件 這是一節以UI布局、容器組件的使用為主題的live,專註於布局與容器這一個點,努力把這一點講透。這是繼4月22日整體入門live“零基礎周末學習小程

Kotlin利器-TargetFun讓多函式介面的呼叫更加簡單

喜歡直接看程式碼的讀者請移步: Kotlin-TargetFun 隨著Kotlin的加入,在安卓開發中寫程式碼變得越發的簡潔和靈活。比如原來的時候用Java書寫一個最簡單的View的點選事件,程式碼是這樣: btn1.setOnClickListener(new

微信程式-----安裝編寫第一個程式和執行到手機端

第一步: 填寫相關資訊,如:主體型別(個人或者企業)        AppID  在開發中都是用的到的,伺服器域名在網路請求也是用的到的。 完成資訊之後,下載開發工具;       選擇自己需要的版本,下載直接安裝,和平常的軟體安裝一樣,直接執行   用微信掃碼登入即可,然後點選新增專案,   輸入

如果類的建構函式私有化再例項通過靜態成員函式來呼叫建構函式。

靜態私有成員在類外不能被訪問,可通過類的靜態成員函式來訪問; 當類的建構函式是私有的時,不像普通類那樣例項化自己,只能通過靜態成員函式來呼叫建構函式。 物件之間通過類的靜態成員變數來實現資料的共享的。

【轉載】VC維結構風險

.html pos 成員 滿足 平衡點 pac 不能 進行 line 以下文章轉載自http://blog.sina.com.cn/s/blog_7103b28a0102w9tr.html 如有侵權,請留言,立即刪除。 1 VC維的描述和理解 給定一個集合S={x1,x

Qt程式執行還原後窗體不重新整理的問題

  Qt程式最小化執行,還原後窗體不重新整理的問題解決 程式執行現象是這樣的,一個包含有QTableWidget的窗體,Item上使用setCellWidget方法嵌入的自定義的widget,上面顯示下載進度條、按鈕等等。當下載任務進行的時候,進度條是動態顯示完成百分比的,此時將其

影象處理能量泛函優化——L1範數正則軟閾值公式

接上篇更新的L2範數求解的問題,接著講L1範數更新的問題 L1範數正則化項又稱為拉布拉斯先驗。帶有L1正則化項的問題是圖問題,求解相對簡單,具有閉式解。其求解就是著名的軟閾值公式。 問題

CentOS-6.4-x86_64 安裝共安裝了多少個軟體包是那些軟體包?

一、如何得知共安裝了多少個軟體包? [[email protected] ~]# rpm -qa | wc -l 219 二、如何得知安裝了那些軟體包? [[email protected] ~]# rpm -qa | sort acl-2

Unity釋出應用程式視窗始終置頂不被

把這個指令碼直接掛到攝像機就OK了,釋出之後可以看效果,編輯模式下看不到效果 using System.Runtime.InteropServices; //control the task bar hide or show //liuyanlei public class

chrome更新到60版本後瀏覽器視窗後恢復會黑屏

最大化的瀏覽器視窗最小化後再恢復就會黑屏好幾秒才能顯示,使用起來很不方便。      解決方案: 進入chrome://settings/拉到最後選擇高階使用硬體加速模式(如果可用)--把這

在VS裡建立Windows窗體讓其在系統托盤並顯示一個Icon圖示

C#實現系統托盤,C#窗體最小化時隱藏為工作列圖示的Window appllication 1.設定窗體屬性showintask=false   2.加notifyicon控制元件notifyicon1,為控制元件notifyicon1的屬性icon新增一個icon圖示。

在mfc中如何設定一個隱藏選單欄工具欄狀態列最大化、、關閉按鈕的窗體 分類: MFC

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {  if (CFrameWnd::OnCreate(lpCreateStruct) == -1)   return -1;  // 去掉標題欄  /*  i

C#點選窗體隱藏工作列和顯示托盤圖示

在窗體的Deactivate事件上,寫以下程式碼: private void Form1_Deactivate(object sender, EventArgs e)

openstack(kilo)安裝部署文件(安裝單機安裝)

前言 之前在centos上安裝了一個版本,是使用的一鍵安裝,devstack來安裝的,這個安裝後很多細節都不太清楚,所以決定手動走一邊安裝過程。 我這裡使用的是一臺物理機進行的安裝,IP 為10.1.82.161,安裝的是最小集合,只安裝了keystone,

Centos7_1708簡版安裝沒有ifconfig命令解決辦法

沒有ifconfig命令解決辦法(另外我百度到改環境變數的方法,有時間再試吧,這裡是我用的解決辦法) 用光碟機配置yum源,安裝net-tools這個軟體包,以下是具體操作: 1.開啟目錄 [[email protected] /]#cd /e

編寫C#程序計算去除大值和值之後的平均值

pub ole eric efault lis ner .get ast c# 有10位評委對跳水運動員做評分,編寫C#程序,計算去除最大得分和最小得分之後的平均得分 作為運動員的跳水成績。 interface IMark using System.Collections