Uber 進軍電動汽車分時租賃

優步(Uber)於2016年4月12日宣佈與武漢暢的科技達成戰略合作,並於全球探索「網路約租車+分時租賃」的雙平臺合作戰略,共建新能源汽車共用生態圈,首期合作將投放500台新能源汽車,為武漢市民提供全新綠色出行服務。

本次合作的新能源汽車則將由暢的科技提供,為優步司機提供低廉的租賃優惠價格,每天僅需100元(人民幣,下同)的租車費用即包含了保險、保養等全部成本,讓司機專注於服務。而租滿三年後,電動汽車還可贈送給優步司機繼續運營,從而降低司機購置成本,推動電動汽車普及。

本次專案的亮點是uber在全球採用與分時租賃相結合的方式,每輛電動汽車將同步接入uber和暢的分時租賃兩個平臺系統,平時司機通過接入uber平臺獲取派單,而在希望休息的時候,則可隨時切換到暢的電動汽車分時租賃平臺,將車輛為周邊的用戶提供按分鐘計費的共用租車服務,繼續賺取租車收益。這種做法將司機租賃的電動汽車利用率達到,極大的分攤了車輛閒置成本。

而困擾司機的充電問題也得到解決,暢的科技將為租賃新能源汽車的優步司機提供智慧充電樁,安裝在司機居住地停車位,為電動汽車提供夜間充電。而司機白天外出後,閒置狀態的電樁則可通過手機切換到公共充電共用平臺,通過為其他新能源車主提供充電服務的方式賺取充電收益,從而補貼自己的電費,甚至實現用電零成本。這種出現的由私人自用電樁共用形成的公共充電網路,使得任何電動汽車車主均可通過手機app找樁、掃碼充電、移動支付進行無人化自助充電,將極大緩解當前城市充電基礎設施不足的困難。

不僅如此,優步還將於與暢的聯手,共同打造多個司機專享充電+服務一體化網站,除了為新能源司機提供日常充電外,更提供10元商務套餐、免費飲料、免費休閒等系列服務,進一步提升司機的幸福指數。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

買電動車前必看:電動車相關名詞解析

隨著電動車越來越多,開始考慮購入電動車的消費者,也不得不面對一項新挑戰:電動車的各種專有名詞,五花八門讓你看了頭疼的詞彙,其實不複雜,快速搞懂這些名詞之後,再去做功課就會輕鬆很多囉。

從燃油車到電動車,有許多新名詞誕生,我們從兩大類著手,就能解決大部分困惑。

電動車(Electric Vehicle)

首先是關於車種的名詞,電動車其實涵蓋範圍很廣,小至兒童玩具,大到高速鐵路,任何以電力驅動的車輛都可稱為電動車,但我們日常對話討論的其實是指四輪的電動汽車,又可分成三大類。

  • HEV(油電車、混合動力車)

目前路上最常見的電動「化」的車,其實是油電車,又稱混合動力車,H 代表的是 Hybrid,廣義上也是電動車,但油電車的電能用意是要讓車輛更省油,整體來說仍歸類為燃油車,不能享有相關補貼優惠。

但大部分國家的禁售燃油車規定,油電車不在禁售名單,但每個國家的規定細節仍有不同,例如英國規定 2030 年起禁售燃油車,油電車仍可販售,但 2040 年起有排放廢氣的車輛不得上路,油電車雖然比燃油車排放量低,但不是零排放。台灣目前尚在研議。

  • PHEV(插電式混合動力車)

油電車只需要加油,但 PHEV(Plugin Hybrid EV)顧名思義還可以插電,動力跟油電車剛好相反,以電力為主,電力不足時啟動引擎進入油電模式,同時帶動發電機充電,達成更優秀的能源表現。

Toyota 是目前插電式混合動力車的霸主,同時享有兩種優勢。(圖片來源:)

擁有插頭,表示可使用電動車充電車位,但擁有引擎讓它無法獲得相關稅賦優惠。比起燃油車,能源效率奇高,但動力表現較差;比起純電動車,續航力與便利性大勝,但動力與零排放部分就弱了,因此是一款介於油電之間的第三選項。

  • BEV(電池動力車)

最後是我們常講的「電動車」,嚴格來說應該稱為電池動力車(Battery EV),定義也很單純,沒有燃油引擎,完全靠車電池的電力行駛,也是我們說的「純電車」。

純電車除了零排放,目前還享有各種補助,包括貨物稅、牌照稅減免及計程車換購補助,台灣部分縣市還提供電動車路邊停車免費優惠。

以上就是目前乘用電動車常見的 3 個種類,接下來是針對純電車的新名詞解釋。

動力與電力

電動車因為使用電池動力,新技術自然產生很多新名詞,以下是幾個考慮購買電動車的車主必須知道的名詞。

  • kWh 千瓦小時

這個縮寫看起來很可怕,但其實就是電費帳單的「度」,用這個來理解電池容量與車輛能源效率最方便了,同時也很像燃油車的「汽油量」。

舉例來說,特斯拉 Model 3 Standard Range Plus 的電池容量是 50kWh,也就是 50 度,所以假設從零充到滿的費用,就等於每度電的費用 × 50。

那特斯拉充電要充多久呢?如果用特斯拉自家充電樁,功率是 11kW(注意,功率沒有 h),這代表用這個功率充電 1 小時,就可以獲得 11 度電量,因此要把這台 Model 3 SR 充滿約需 50÷11=4.5 小時。

反過來說,這台 Model 3 SR 能開多久?這就跟燃油車一樣,取決於怎麼開,以極端例子來說,這輛車的馬達最大功率是 260kW,如果你一直用極速衝刺,那里程就是 50÷260=0.19h,大概 10 分鐘就會用完電。當然沒有人會這樣開車,因此更重要的是下面這個名詞。

  • Energy Efficiency 能源效率

這就跟油耗很類似,以前我們會看一輛車 1 公升油可跑幾公里,電動車則常用百公里消耗能源量來比較,看起來會像 15kWh / 100km 這樣。代表這台車平均行駛 100 公里,要用掉 15 度電,這也是前面那台特斯拉 Model 3 的數據。

美國 EPA 的數據通常比較嚴苛,因此車廠不太提供。(圖片來源:)

這樣你就可以推算出這台車約能跑多遠,因為車電量是 50 度,每 100 公里用掉 15 度,那大約可跑 330 公里。

等等,特斯拉官網不是說可跑 400 公里嗎?這就要帶出下一個名詞了。

  • WLTP / EPA range

能源效率跟油耗一樣,不同測試方法會測出不同結果,目前最常見的是這兩種標準。WLTP 是歐盟的新標準,取代以前用的 NEDC。EPA 則是美國能源局的簡稱,兩邊測試方法不同,有興趣可以另外找來研究,我們只需要記得一件事:WLTP 里程比較高,EPA 里程比較低。

各家車廠當然都會拿比較漂亮的 WLTP 數據給自家車用,要酸對手的車時,就拿 EPA 數據來用。不管怎麼說,測試都不可能完美,但根據目前資料來看,車廠提供的 WLTP 數據,打 8 折差不多就很接近實際上路的狀況。

  • AC/DC 交流電直流電

最後要講到的是兩種不同的充電方式,想了解更多原理建議自行搜尋,也可參考之前介紹過的,但在這裡我們提供你最簡單易懂的理解方式:一般充電是交流電,充滿 6 小時;快速充電用直流電,不超過半小時。交流電全台通用,直流快充請找自家車廠。

特斯拉提供的交流電充電速率對照表,單位是可行駛公里數。(圖片來源:)

直流電的功率高達上百 kW,所有電動車幾乎都在半小時左右就會充到 80% 以上,雖然快速,但因建設成本高,所以站點還不普遍,且不同廠牌有不同規格,有長途旅行需求,務必要研究清楚 DC 充電站的位置,才能確保動能無虞,就像一般加油站。

交流電功率較小,常見充電樁都在 7kw 左右,適合賣場停車或家中車庫使用,雖然充電速度慢,但台灣已有統一規格,任何車款都能使用公共充電樁。如果家裡能安裝充電設備,也只需充電一晚,就能完全充滿。

以上就是我們整理的電動車名詞介紹,讓尚未了解電動車相關知識的朋友快速上手,其實很簡單對吧?你還遇到哪些看不懂的電動車名詞呢?趕快留言跟我們討論。

(合作媒體:。首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

南投搬家前需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

豐田概念電動汽車uBox:想要什麼可以自己定制

近日,豐田和克萊門森大學國際汽車研究中心合作,為下一代的司機創造出了一個全新的概念電動汽車——uBox。

豐田曾經發起了一個名為“Deep Orange”的合作專案,uBox正是項目的結晶。

據瞭解,豐田和克萊門森大學在過去的兩年裡一直致力於這款概念車的開發工作。uBox概念車使用了方形的設計、自動式車門,並用複合碳纖維和鋁合金支撐著一塊弧形玻璃。其全新設計的套件裝備均極大程度提升了整車的舒適性與功能性。

豐田表示汽車的內部配置可以根據司機的品味進行配置。座位安裝在導軌上,並且通風口、內飾、車內顏色方案都可以定制,可以下載新設計然後用3D印表機重新構建。它還擁有一個110伏的插座,可以為筆記型電腦等眾多設備充電。

至於動力系統方面,除了豐田將在uBox上搭載一台電動機引擎之外,目前並沒有獲得更多這方面的消息。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

使用.net core中的類DispatchProxy實現AOP

在軟件業,AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。AOP是軟件開發中的一個熱點,利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性。

比如說三層的調用:UI => BLL => DAL,正常來說我們會在UI層調用BLL層某個類的某個方法,然後BLL層某個類的某個方法又會調用DAL層某個類的某個方法,可以說通常情況下我們都是這麼乾的;如果說UI調BLL、BLL調DAL是縱向的話,那麼AOP就是橫向的,AOP可以做到在調用BLL層或DAL層任意方法之前之後做一些統一的邏輯處理。

AOP的典型應用場景:日誌記錄、權限驗證、異常處理、緩存等

目前,可以實現AOP的類庫也有很多,如下:

AspectCore
Unity
Castle DynamicProxy
Dora.Interception

 

但是在.net core中有DispatchProxy類(命名空間:System.Reflection),提供實例化代理對象和處理其方法調度的機制,藉助它我們可以自己實現AOP,直接看示例

 

定義一個消息接口IMessage,其中有一個發送消息Send和接收消息Receive的方法定義:

    public interface IMessage
    {
        void Send(string content);
        void Receive(string content);
    }

 

定義电子郵件類EmailMessage實現消息接口IMessage,實現使用电子郵件發送和接收消息:

    public class EmailMessage : IMessage
    {
        public void Send(string content)
        {
            Console.WriteLine("Send Email:" + content);
        }
        public void Receive(string content)
        {
            Console.WriteLine("Receive Email:" + content);
        }
    }

 

定義日誌攔截器LogDispatchProxy 繼承自DispatchProxy類,重寫基類Invoke方法並在目標方法調用前後加上所需業務邏輯;然後定義TargetClass屬性,該屬性是目標方法所屬類的實例

    public class LogDispatchProxy : DispatchProxy
    {
        public object TargetClass { get; set; }
        protected override object Invoke(MethodInfo targetMethod, object[] args)
        {
            Write("方法執行前");
            var result = targetMethod.Invoke(TargetClass, args);
            Write("方法執行后");
            return result;
        }

        private void Write(string content)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(content);
            Console.ResetColor();
        }
    }

 

使用:

    class Program
    {
        static void Main(string[] args)
        {
            //使用DispatchProxy類的靜態方法Create生成代理類,其中Create是個泛型方法,泛型有兩個值,第一個值必須是接口,第二個值必須是DispatchProxy的子類
            IMessage messageDispatchProxy = DispatchProxy.Create<IMessage, LogDispatchProxy>();
            //創建一個實現了IMessage接口的類的實例,並賦值給代理類的TargetClass屬性
            ((LogDispatchProxy)messageDispatchProxy).TargetClass = new EmailMessage();
            messageDispatchProxy.Send("早上好");
            Console.WriteLine("=======================================");
            messageDispatchProxy.Receive("中午好");

            Console.ReadKey();
        }
    }

 

執行結果

我的理解:通過DispatchProxy.Create創建的代理類messageDispatchProxy 就是一個LogDispatchProxy類,並且利用我們提供的的實例實現了IMessage接口,所以messageDispatchProxy可以強轉為LogDispatchProxy或IMessage

至此,我們沒有通過任何第三方類庫,自己實現了一個AOP

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

2. 彤哥說netty系列之IO的五種模型

你好,我是彤哥,本篇是netty系列的第二篇。

簡介

本文將介紹linux中的五種IO模型,同時也會介紹阻塞/非阻塞與同步/異步的區別。

何為IO模型

對於一次IO操作,數據會先拷貝到內核空間中,然後再從內核空間拷貝到用戶空間中,所以一次read操作,會經歷兩個階段:

(1)等待數據準備

(2)數據從內核空間拷貝到用戶空間

基於以上兩個階段就產生了五種不同的IO模式。

阻塞IO

從進程發起IO操作,一直等待上述兩個階段完成。

兩階段一起阻塞。

非阻塞IO

進程一直詢問IO準備好了沒有,準備好了再發起讀取操作,這時才把數據從內核空間拷貝到用戶空間。

第一階段不阻塞但要輪詢,第二階段阻塞。

多路復用IO

多個連接使用同一個select去詢問IO準備好了沒有,如果有準備好了的,就返回有數據準備好了,然後對應的連接再發起讀取操作,把數據從內核空間拷貝到用戶空間。

兩階段分開阻塞。

信號驅動IO

進程發起讀取操作會立即返回,當數據準備好了會以通知的形式告訴進程,進程再發起讀取操作,把數據從內核空間拷貝到用戶空間。

第一階段不阻塞,第二階段阻塞。

異步IO

進程發起讀取操作會立即返回,等到數據準備好且已經拷貝到用戶空間了再通知進程拿數據。

兩個階段都不阻塞。

IO模式對比

各種IO模式同比如下:

同步非同步的區別在於調用操作系統的recvfrom()的時候是否阻塞,可見除了最後的異步IO其它都是同步IO。

select poll epoll

select 有最大文件描述符的限制,只能監聽到有幾個文件描述符就緒了,得遍歷所有文件描述符獲取就緒的IO。

poll 沒有最大文件描述符的限制,與select一樣,只能監聽到有幾個文件描述符就緒了,得遍歷所有文件描述符獲取就緒的IO。

epoll 沒有最大文件描述符的限制,它通過回調的機制,一旦某個文件描述符就緒了,迅速激活這個文件描述符,當進程下一次調用epoll_wait()的時候便得到通知。

所以,在有大量空閑連接的時候,epoll的效率要高很多

彩蛋

Java中的nio使用的是哪種IO模型呢?

答:Java中的nio實際上是new io的縮寫,它使用的是多路復用的IO模型

參考

本文對IO的五種模型做了很簡短的總結,沒看懂的同學可以看看下面這篇文章,講得很詳細。

最後,也歡迎來我的公從號彤哥讀源碼系統地學習源碼&架構的知識。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

南投搬家前需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

卡車界的 Tesla!油電混合車款可連續行駛 1,200 英里

電動車製造商 Tesla 的名字來自物理學家 Nikola Tesla,現在一家名叫 Nikola 的廠商則把目標放在電動卡車上,該公司推出了兩款電動卡車新品,其中純電動款單次充電可行駛 125 英里,油電混合的卡車則可以連續行駛 800 至 1,200 英里,無法充電或者加油。   Tesla 的目標市場取代人們日常出行乘坐的汽車,Nikola 同樣是製造電動車,但卻把目光放在了主要用於運輸的卡車上,致力於用電動車技術來升級傳統卡車。

該公司發表了兩款產品,Nikola One 是一款油電混合卡車,雖然目前還是一款概念車,但廣闊的商業前景已經吸引了巨大的關注,如果 Nikola 公司能夠最終把電動卡車推向市場,這將對卡車產業帶來巨大的影響。Nikola One 單次充電和加油,可連續行駛 800 至 1,200 英里 ,配置了 320kWh 電池,採用電池功能的每英里行駛成本僅是柴油發動機驅動行駛成本的五成。

Nikola One 能夠達到如此驚人的里程,主要是由於渦輪機和再生制動技術,在卡車行駛的同時能夠在內部給電池二次充電。   據 Nikola 公司透露,渦輪輸出了 400 kW 清潔能源為電池充電,這和其他廠商的油電混合車所採用的技術完全不同,多項技術都是第一次應用在卡車上。在滿載的狀況下,卡車從 0 到 65 英里的啟動時間不到 30 秒,上坡行駛也能夠達到了每小時 65 英里的速度,性能出眾。Nikola 公司的創始人、CEO Trevor Milton 表示,這款油電混合卡車聽起來可能像小說裡寫的,但團隊正在和一些美國最聰明的人合作,把這款卡車從實驗室帶向市場。Nikola One 電動卡車將改變交通運輸業的未來,消費者還需要等待一段時間。將在 2016 年年底展示原型車,定價至少高於 35 萬美元。

(本文授權轉載自《》─〈〉)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

德國萊比錫訂購首批純電池動力列車,2023 年開始營運

法國運輸公司阿爾斯通(Alstom)日前宣布,正式簽下一筆價值 1 億歐元(約新台幣 32 億元) 的訂單,將在兩年內於德國部署 11 輛電池動力列車,並負責其後續服務直到 2032 年。

Alstom 的列車產品幾乎無所不包,而針對中程區間車款推出的 Coradia 系列已經有 30 年歷史,在 2018 年底,他們推出的氫燃料電池列車 Coradia iLint 營運至今成效良好,並陸續在其他地區接獲訂單,而這次他們將打造的新列車將是純電池動力型態。

這筆訂單的服務目標,是要連接德國東部大城萊比錫與開姆尼茨之間,距離約 80 公里的路線,這一段鐵路並沒有電氣化,目前只能使用柴油列車,為了省下電氣化的工程與費用,當地的鐵路業者決定採購電池動力列車,而且 2023 年就能上路。

這款新列車將命名為 Coradia Continental BEMU,完全依靠電池動力運行,里程可達 120 公里,並且能夠在電氣化或非電氣化鐵道行駛。列車由三節車廂組成,長度約 56 公尺,共有 150 個座位。

電動列車最快的行駛速度可達每小時 160 公里,阿爾斯通沒有提供詳細的電池規格,只表示將採用高壓鋰離子電池組,並且依據運營路線的距離去最佳化列車行駛的速度。

目前阿爾斯通在德國的新能源列車已經有兩家客戶,總共採購了 41 輛氫燃料電池列車,在德國聯邦政府全力拼減碳的目標下,這些零排放列車都能獲得約 40% 的補助。

台灣鐵路幾乎都已經電氣化,目前只剩下南迴鐵路總計 123.4 公里尚未完成,目前行政院已經核定經費 276 億施工,工程時間長達 9 年,預定於 2020 年底能全線完工。如果對比阿爾斯通的電池列車方案,確實可以省下大筆經費與時間,不過電氣化完工後,原本在東部幹線運行的臺鐵普悠瑪也能夠使用,而且不用擔心電池充電問題與壽命衰退的可能,只能說優劣各半。

但許多國家不像台灣有這麼完整的電氣化鐵路網,因此未來逐步淘汰柴油列車時,這種電池動力列車與氫燃料電池列車的商機,仍然非常可觀。

(合作媒體:。首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

南投搬家前需注意的眉眉角角,別等搬了再說!

阿里巴巴的雲原生應用開源探索與實踐

作者 | 司徒放(姬風) 阿里巴巴技術專家

本文整理自司徒放(姬風)題目為《開源的黃金時代,阿里巴巴雲原生開源的探索與實踐》的演講。
關注“阿里巴巴雲原生”公眾號,回復關鍵詞“開源”即可下載本文 PPT。

導讀:從擁抱開源、貢獻開源、自主開源,到賦能開源,開源已升級為阿里技術戰略之一,且正為開發者源源不斷地輸送切實可見的價值。雲原生是阿里開源的重要領域,短短几年,以 K8s 為核心的雲原生開源生態迅猛發展,這是全世界開發者合作傑出成果,也是開源力量的結晶。

阿里巴巴的應用架構演進

大家好,我是司徒放,目前在阿里巴巴負責阿里雲的應用平台和微服務產品線。在和大家分享我們在雲原生應用方面的探索之前,先和大家介紹一下阿里巴巴在整個應用架構方面的演進歷程。

今年是阿里巴巴成立的二十周年,二十年前,阿里巴巴使用的這個應用的架構,還是單體應用模式,它有很多的業務模塊都在一個應用裏面,各個業務都在一個應用裏面開發,這個架構的一個好處是簡單,也非常容易部署,對小的創業公司來說是很方便的。它的缺點在於團隊變大變多之後,不能滿足快速迭代要求,因為每一個業務它需要去發布的時候,都需要在同一個應用上做修改、發布,當這個業務迭代非常快的時候,它同時的一個併發修改就非常多。

所以在 2008 年的時候,阿里巴巴就引進到了微服務架構,只是當時並不叫微服務,而是叫服務化架構。各個業務模式就按照服務的邊界來拆分,這是比較松耦合的一種方式,一個微服務應用是無狀態的,可以快速擴展實例。而且某個實例有異常比如宕機時會可以自動下線,不會影響整個服務架構的穩定性。微服務架構也比較容易推動整個互聯網公司的快速迭代需求。

大概三年前,阿里巴巴就走向了雲原生的架構。這是一個天然適合雲的、能夠充分利用雲的彈性能力和標準雲服務,給整個阿里巴巴的電商降低機器的準備成本,特別是類似於在大促雙十一需要很多機器去支撐,但是大促結束之後,這些機器有一半以上就可以歸還到雲上。

這個時候,阿里巴巴就在往雲原生的方向去邁進,而且通過整個雲服務能夠更快地加快整個阿里巴巴的技術構建。而且雲原生架構,是一個比較開放、標準、沒有侵入性的技術架構。

阿里巴巴在雲原生的開源進程

在阿里巴巴進入到了雲原生之後,我們看一下阿里巴巴在開源方面做了一些什麼樣的事情呢?

運維領域

首先,整個雲原生架構裏面最重要、最關鍵的一個基石就是 Kubernetes。
阿里巴巴在兩年前,就在大規模的落地 Kubernetes 的整套技術用來做我們機器資源的調度和管理。在內部有數十萬台級別的機器以及上百萬級別的容器規模,直接拿開源的 Kubernetes 到這種生產規模下是用不起來的,所以我們在上面做了很多性能優化,包括針對規模上的改造,使得整個 Kubernetes 在阿里巴巴內部能夠很順暢地 run 起來,阿里巴巴也在不斷地向上游去貢獻我們內部實踐和優化的代碼。
除了 Kubernetes 之外,在整個雲原生生態里還有像容器、etcd,我們也在不停地優化它的規模能力以及安全隔離方面的一些能力。同時,也開源了內部使用的蜻蜓(Dragonfly)用來做大規模的鏡像快速分發。

開發領域

在開發領域,阿里巴巴很早就已經使用了微服務架構,也對外進行了開源,比如說 Apache Dubbo,這個是比較知名的 RPC 框架;還有去年開源的 Nacos ,作為阿里巴巴集團支撐大規模的服務註冊發現、配置推送一個組件;另外,還有 Spring Cloud Alibaba,基於阿里開源的組件提供了一整套 Spring Cloud 最佳實現;還有像支撐整個阿里巴巴高可用的 Sentinel、以及 Apache RocketMQ 消息隊列,都是我們在開發領域做的開源。

這些組件其實隨着阿里巴巴進入雲原生時代之後,也在逐步結合雲原生做一些改進,比如說 Apache Dubbo,會更好地去適配我們未來的微服務 Service Mesh 架構,它會理解 Istio 的 xDS 協議,成為一種數據面;比如 Nacos,它為 Service Mesh 的 Istio 提供 MCP 協議的對接,成為雲原生微服務和傳統微服務互通的橋樑。

應用

在開發領域和運維領域之間,其實我認為還有一個很大的空缺,就是專門用來連接整個開發和運維的應用這一塊。

對於開發階段,寫完代碼之後交付的是一個應用包,而這個應用包也是整個運維繫統上運行的一個基礎顆粒。我們認為現在在雲原生階段,缺少了一個很好的應用交付和運維標準,大家在不同的公司會看到每個公司都有不一樣的運維平台,應用的部署和交付都沒有辦法被標準化。我們現在進入雲原生時代,推崇的是標準、開放,所以我們認為在這一塊上面還有很大的機會去做進一步的應用標準建設,這是我接下來想要和大家重點分享的一個話題。

雲上應用交付和運維的痛點

先看一下雲原生在交付和運維方面有哪些痛點呢?

剛剛也講到了,在進入到了微服務之後,我們面臨的一個問題就是應用的實例數會越來越多,會到成百上千的規模不斷往上增長;另外還有我們部署的環境也變得越來越多,比如說現在有不同的雲廠商,以及我們有很多專有雲的自建機房的輸出;另外還有很多自建的環境,這些環境多樣化以及我們應用在運行時它會以容器的方式去運行,可能還是以傳統的虛擬機的方式去運行,或者它會以函數的方式去運行,但是運行時也會有很多不一致,比如不同的環境、或運行時的不一致,會導致整個分佈式運維體系變得越來越複雜,它的監控、日誌採集也是一個很大的挑戰。

當這些應用已經放到雲上去運行的時候,由於很多的雲服務並沒有被標準化,很多這種雲的能力需要集成到應用上的時候,也會有很大集成的困難。而這些雲上應用運維的痛點以前也有類似的,我們可以跟過往的解決方案做一個對比。

過往解決方案

首先,是類似 Ansible、Puppet 這些基礎設施運維自動化的工具。這些工具對整個運維效率起到了很大的提升作用,減輕了運維同學的工作量,但是它使用的是一些自應用的模塊,而且它的概念是偏向於腳本運維的方式,非常的底層。

隨後出現了類似 Cloud Foundry 、Heroku 這種比較經典的應用平台,這些應用平台是以應用為中心去做運維和交付,往上把運維的工作進行了一個抽象,按照 buildpack 的方式去做運維和交付,通過 buildpack 的方式,可以簡化整個應用運維的工作,但是 buildpack 本身覆蓋的範圍比較窄,在運維和交付方面,缺乏一些運維交付的標準,所以它的可擴展性是比較差的。

隨着 Docker 容器的橫空出世,打破了傳統基於 buildpack 的應用交付模式,所以就出現了新一代的容器管理平台,而 Kubernetes 成為了雲原生時代一個新的容器平台事實標準。Kubernetes 本身提供了很多基礎服務抽象,比如說 Deployment、Service。在社區裏面它有一句很著名的定位:“Kubernetes is the platform for platforms.”也就是說,Kubernetes 定位是構建平台的平台,能夠簡化構建應用平台的複雜度,它不會再去做上層基於應用的抽象。大家可以發現歷史總是那麼相似,從過去的運維工具到後來基於應用的抽象,到現在容器出現打破運維格局,重新對這個領域進行洗牌,自然,在雲原生時代需要一個對應交付和運維應用的平台。

從過往解決方案引發的思考

關於雲原生時代的應用抽象,我們要做一個思考:我們需要什麼樣的應用抽象呢?

首先,它需要解決我們運維交付的一個複雜度,以及屏蔽底層細節差異。無論什麼時候,都是應用平台需要解決的問題。另外,參考我們過去比較傳統的應用平台的問題,比如說 buildpack 這種方式,它存在不通用/不易於擴展的問題,我們認為接下來的應用抽象,它應該要具備在應用運維方面更加通用、可擴展的描述能力。

除此之外,我們在推廣應用抽象的時候,還是要採用開源和社區的方式去推進,因為未來一定是更加標準和開放的,我們推廣這個應用抽象,就是希望有更多開發和運維工作者,能夠給這個標準提供更多的建議,能夠通過整個社區進一步推動整個應用交付和運維標準的發展。

Open Application Model – 開放應用模型

在上個月中旬,阿里雲和微軟聯合發布了“Open Application Model(開放應用模型)”這一個開源項目。我們希望通過這個開放應用模型,解決“在雲原生時代缺乏一種應用交付標準”的問題。(“Open Application Model -開放應用模型”後面簡稱為“OAM”)

OAM 的三種角色

OAM 裏面有三種不同的角色。

  • 首先是應用開發。很明顯,應用開發是負責編寫業務邏輯的。比如說它會寫 Spark、Wordpress、Spring Cloud 等微服務的程序,它寫完這個微服務的程序之後呢,會按照 OAM 標準編寫一段應用定義;

  • 第二個是應用運維的角色,就是負責應用的交付與運維;

  • 第三個角色是基礎設施平台。基礎設施平台在 OAM 里的一個重要定位,在於它要將自己的基礎服務能力抽象成可被複用、被重用的模塊,並提供給開發和運維人員去使用。

OAM 核心概念解讀

下面為大家解讀以上的三個角色對應的三個核心概念。

  • 首先是 Component。它是被開發人員定義的一個可被重用的應用組件,這個應用組件描述的就是這個應用它運行的方式;

  • 第二個重要概念是 Trait。它是一種應用的運維特徵,是由基礎設施平台這個角色定義的,而這個定義它包含了可組合的應用運維特徵,這個特徵是其實是這個平台可以提供出來的某種運維能力抽象;

  • 最後一個是 ApplicationConfiguration。運維人員負責把 Component 和 Trait 兩個綁定在一起,並且作為一個具體的實例化,生成了這個應用配置(ApplicationConfiguration)之後,就可以把應用部署起來。

用 OAM 描述的應用配置示意

接下來是一個具體的用 OAM 描述的應用配置文件(上圖文件做了一定內容簡化,具體以下面的 yaml 文本為準)。

apiVersion: core.oam.dev/v1alpha1
kind: ComponentSchematic
metadata:
  name: wordpress
spec:
  workloadType: core.oam.dev/v1alpha1.Server
  containers:
    - name: test
      image: docker/wordpress:latest
      env:
        - name: key1
          fromParam: test-key
      ports:
        - type: tcp
          containerPort: 9999
          name: http
    parameters:
    - name: test-key
      type: string
---
apiVersion: core.oam.dev/v1alpha1
kind: ApplicationConfiguration
metadata:
  name: wordpress-app
spec:
  components:
    - name: wordpress
      instanceName: wordpress-instance
      parameterValues:
        - name: replicas
          value: 3
        - name: test-key
          value: value-from-ops
      traits:
        - name: service
          parameterValues:
            - name: portMapping
              value: 
                - protocol: "TCP"
                  port: 52014
                  targetPort: 9999
        - name: rollout
          parameterValues:
            - name: canaryReplicas
              value: 1

由運維人員編寫的 ApplicationConfiquration 文件,它將 Component 和 Trait 兩個概念綁定在一起。首先裏面描述運維要部署一個叫 wordpress-app的應用,它引用了一個叫 wordpress 的 Component。這是開發人員在另一個配置文件 Component 定義的,他除了定義 wordpress 應如何運行(比如配置鏡像位置)以外,還允許運維配置運行實例的副本數以及運行時環境變量 test-key 的值。在 ApplicationConfiquration 里同時引用了兩個運維特徵,運維人員會填寫這個應用需要一個負載均衡,要做外網的端口映射,部署時需要採用金絲雀發布策略。這個文件對應到實際上的部署階段會變成如上圖右側所示,上面會有一個負載均衡,比如在雲上運行時,就會使用 SLB 去做負載均衡的自動分發,會給它配置外網 IP 和內外端口映射。

通過這個簡單的 yaml 文件,大家就可以了解到這個應用怎麼做快速部署,並且描述運維要具備什麼能力。

OAM 的設計理念

給大家總結一下,我所認為的 OAM 的重要的設計理念。

  • 首先第一個是配置即代碼。所有的 OAM 上面的運維和交付的操作都會使用配置的方式,完全通過 yaml 文件去完成所有的交付運維配置;

  • 第二個是依賴倒置。這個依賴倒置有點像 JAVA Spring 開發者使用 IoC 或者 DI 的這種模式,在寫這個應用配置的時候,只是依賴應用標準抽象,而這個標準抽象背後的實現實際上是由 OAM 的運行時去做“注入”,通過這個方式就使得我們的應用運維不依賴於我們具體的運行環境;

  • 第三個是重要的設計理念就是角色關注點分離。剛剛上面講過 OAM 里的三種不同的重要角色:開發、運維以及基礎設置平台。這三種角色只需要編寫對應不同的配置文件,互相解耦。這樣開發不需要關心應用是怎麼運維的,只需要把運行時需要的配置暴露並描述出來;基礎平台只需要把平台能力提煉成 Trait;最終由運維人員把開發需要的參數和運維需要的能力進行結合。

  • 第四個就是整個 OAM 的設計是一個可組合可擴展的方式。它會通過讓我們剛剛說到的 Traits 能夠按需組合、重用、移植和擴展。

EDAS & OAM

上面我們說了這麼多其實都是比較一些概念性的東西,接下來我們看一下,在阿里巴巴的雲產品 EDAS 對 OAM 所做一些落地方面的嘗試,這也是第一個在實際生產上面基於 OAM 對外可開放使用的雲產品。

下面會用 EDAS 為例,給大家做一個介紹,講解一下 OAM 具體怎麼運作。

EDAS 是什麼?

首先介紹一下 EDAS 是阿里雲上面的一個雲產品,它扮演着我剛才講到的類似於一個應用平台的一個角色:

  • EDAS 從開發方面就提供了開發框架給我們雲上的開發者去使用;
  • 開發者開發完程序之後,會把應用交付到 EDAS 上面去進行部署;
  • 與此同時 EDAS 會對這個應用進行監控診斷,根據容量情況進行實例彈性伸縮;
  • EDAS 會對上面的微服務進行註冊發現、服務治理;
  • 提供應用的高可用保護,比如限流降級、熔斷等。

這些是 EDAS 作為應用平台在阿里雲上的產品定位。

EDAS 支持 OAM 的運行示意圖

那麼它在支持 OAM 在運行的時候又是什麼樣的呢?

如圖所示,一個開發人員,他首先需要去編寫一個按照 OAM 標準為參考去定義一個 Component。這個 Component 裏面會定義如開發應用類型是什麼樣子,比如它的鏡像路徑、它需要多大的存儲空間,以及它的環境變量是什麼樣子,這些都是開發人員在開發的時候需要去描述的內容。

對於阿里雲來說,它是一個基礎設施平台的身份。它在上面其實有很多運維的能力,比如說像監控報警、塊存儲、需要發布策略和彈性伸縮的策略。EDAS 會把這些平台能力抽象成一個一個獨立的 Trait,開放給運維人員使用。

在需要部署應用的時候,運維人員會選擇 EDAS 上提供的 Trait 並填寫相關參數,同時也設置好開發人員的 Component 的參數,這作為一次應用部署,生成了 ApplicationConfiguration 提交給 EDAS。

EDAS 作為 OAM 的運行時,在讀取到這份部署配置后,它會去實現 Trait 提供相應的運維特徵動作,比如說運維描述需要一個塊存儲,那麼 EDAS 會在阿里雲上面去申請一個具體的塊存儲對象,並綁定到這個應用上面。同時 EDAS 會提供一個容器環境(如 Kubernetes)去運行開發者定義的 Component 的工作負載,比如購買 ECS,配置好容器環境,把環境變量傳給容器,使 Component 能夠正常運行。

以上就是整個 EDAS 支持 OAM 的一個運行示意圖。

EDAS 支持 OAM 的對比

那麼 EDAS 在支持 OAM 之後,它的使用情況又會發生怎樣的變化呢?

在沒有使用 OAM 的時候,客戶需要和系統解釋我要做些什麼事情、我要怎麼做這個事情。比如說,他需要申請 5G NAS 存儲,並且要把它掛載到某個機器的某個目錄上面;或者他還有一個監控的需求,他需要告訴系統現在有一個業務指標文件,需要被監控採集,他要去設置這個文件的指標處理規則,最後把這個指標存儲成時間序列數據,並且設置報警閾值。在使用 OAM 之後,它就變成了描述式,他只要描述我需要什麼東西就夠了。比如開發者可以說這個目錄上面需要有 5G 的外置可讀寫存儲就夠了,具體這 5G 存儲怎麼申請是由 OAM 運行時去幫助解決的。另外,在監控的時候,他只需要描述自己的這個應用需要被監控、哪個指標需要被監控並報警就夠了,他不需要了解對接到具體是哪一個監控系統,他不需要去關心這些事情。

原來很多雲產品或者原來很多自定義運維平台都是需要依賴特定的 API 或者 CLI 這種模式去做運維的,這個時候應用要遷移到另外一個運維平台,它的代碼、鏡像、二進制包可以帶走,但是它的很多運維的設施、運維的配置包括監控的配置,這些東西都是只能留在這個平台上的,沒有辦法很容易地遷移到另外一個平台上面。而通過 OAM,可以將平台所有的運維配置以 yaml 導出,並且能夠很快地導入到另外一個環境、甚至是另一個應用平台上,整個系統會變得更加標準。

在使用 OAM 以前,運維人員需要去學習很多知識,比如使用的是 Kubernetes,他需要去了解整個容器和 Kubernetes 的使用方式,他要做定製和拓展就需要去學習 Kubernetes。如果他是從虛擬機的模式切換到容器的運維模式,這個時候他就需要很多時間去理解容器和虛擬機運維之間的差異。遷移到 OAM 之後,相當於 OAM 屏蔽了整個平台底層的細節,所以使得整個運維平台的 OAM 配置沒有多大差別。

最後一點就是定製的難度上面。剛剛也講到過,這個是 OAM 的一個重要的目標,讓整個運維的擴展能夠更容易的被發現、被組合、被替換。在使用 OAM 之前,運維的邏輯都散落在腳本裏面,或者說都在運維平台內部,這個時候很難去統一管理。而一套 OAM 的運行環境是可以自描述的,可以非常容易把平台提供的 Trait、Component 工作負載羅列出來,使用者可以替換或增加新的 Traits,在運行應用時可以自由選擇和組合這些 Traits。

OAM 後續規劃,歡迎社區貢獻

以上講了 OAM 相關的一些基本內容,實際上 OAM 剛剛開源還有很多需要補充和完善的地方,這裏也列出了 OAM 上最近這半年的計劃,希望大家能夠參与社區,在上面貢獻更多的想法。

主要有幾個規劃:

  • 易用性方面
    • 提供 Kubernetes 一鍵導入工具;
    • 增加應用之間的依賴描述;
    • 不斷完善 OAM 的標準定義(Spec);
    • 社區提供更多的 OAM 上的實踐案例;
  • OAM 開發方面
    • 盡量進一步去做開發的簡化,包括一些字段的校驗工具、編寫 Controller 框架,方便更高效的開發 Trait 等實現;
    • 另外,OAM 它本身不僅僅是一個標準,它還提供了一個名為 Rudr 的參考開源實現;
  • 功能方面
    • 提供新的基礎 Traits 去簡化應用運維管理,比如常見的流量管理、藍綠髮布;
    • 能對接更多的應用平台,比如說像 Windows、IoT 這樣的平台。

最後,我的演講就到這裏,謝謝大家!喜歡 OAM 的朋友可以掃描下方二維碼,謝謝!

更多詳細信息請關注“”。

“ 阿里巴巴雲原生微信公眾號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術公眾號。”

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!

基於曝光融合框架的對比度增強算法

目錄

論文題目《A New Image Contrast Enhancement Algorithm Using Exposure Fusion Framework》翻譯以及分析

摘要

低光圖像不利於人眼觀察和計算機視覺算法識別,因為它們的可見度較低。雖然已經提出了許多圖像增強技術來解決這個問題。但是現有方法不可避免地存在對比度過低和過高的情況。在本文中,我們提出了一種精確的對比度增強的算法。具體來說,我們首先使用光照估計技術為圖像融合設計權重矩陣。然後,我們用相機的響應模型合成多重曝光圖像。接下來,我們找到最佳的曝光率,為了合成圖像在原始圖像曝光不足的區域進行更好的曝光。最後,輸入圖像和合成圖像根據權重矩陣進行融合以獲得圖像增強的結果。實驗表明,相比其他優秀的方法,我們的方法可以得到對比度和亮度失真更少的結果。

1. 研究現狀

圖像增強技術廣泛用於圖像處理中。一般來說,它可以使輸入圖像看起來更好,並且更適合於特定算法進行處理。對比度增強,作為一種增強技術,可以在圖像中显示曝光不足區域的信息。目前有大量的對比度增強的技術,主要包括基於直方圖,基於Retinex和基於除霧的方法的增強技術。

彩色圖像可以用三維數組表示。最簡單的對比度增強的方法是對每個對象執行相同的處理過程。例如,最早的圖像增強方法使用非線性單調函數進行灰度級映射。

考慮到不同灰度級別中元素的不均勻分佈,因此直方圖均衡化(HE)被廣泛用於改善對比度。許多直方圖均衡化的擴展方法將亮度保存和對比度限制考慮進去。但是基於直方圖均衡化的方法總是會過度增強和產生不切實際的結果。在模仿在人類視覺系統中,Retinex理論也廣泛用於圖像增強。通過將反射圖與光照圖分開,基於Retinex的算法可以明顯增強細節。但是這些方法在高對比度區域容易產生偽像。近年來,一些方法應用除霧技術來增強對比度並獲得良好的主觀視覺效果。但是這些方法也可能會因為對比度過度增強而導致顏色失真。

儘管圖像對比度增強方法研究了幾十年,但是好的增強效果仍然沒有很好的定義。此外,現有的弱光增強算法也沒有提供參考如何定位過度增強和不足增強區域。我們注意到不同的圖像曝光度可以作為增強算法的參考,如圖1所示。隨着曝光度的增加,一些低曝光區域變得曝光良好。增強的結果應保持曝光良好的區域保持不變,而曝光不足的區域則增強。與此同時,增強區域的對比度應與正確曝光區域保持一致。

在本文中,我們提出了一個新的框架來幫助緩解欠/過度增強的問題。我們的框架基於相機響應模型從輸入圖像合成的多張曝光圖像的曝光融合。基於我們的框架,我們提出了一種增強算法與其他幾種相比最先進的方法,可以獲得更少的對比度和亮度失真的結果。

2. 本文方法

2.1 曝光融合框架

在許多室外場景中,相機無法使所有像素曝光良好,因為它的動態範圍是有限的。如圖1所示儘管我們可以通過增加曝光量显示一些曝光不足的區域,與此同時曝光良好的區域可能同時曝光過度。為了讓所有像素的圖像曝光良好,我們可以融合這些圖像:
\[ R^c = \sum\limits_{i=1}^{N}W_i*P_i^c \]
其中 \(N\) 是圖像數量,\(P_i\) 是曝光集合中的第 \(i\) 個圖像,\(W_i\) 是第 \(i\) 個圖像的權重圖,\(c\) 是三個顏色通道的索引,\(R\) 是增強后的結果。三個顏色分量是相等的,所有像素是不均勻的:曝光良好的像素具有較大的權重,曝光不良的像素權重較小。權重已標準化,因此 \(\sum_{i=1}^{N}W_i=1\)

問題是具有其他曝光設置的圖像不適用於圖像增強問題。幸運的是,使用不同的曝光度拍攝的照片是高度相關的。在我們的早期工作中,我們提出了相機響應模型以準確描述這些圖像之間的關聯,以便我們從輸入圖像生成一系列圖像。兩張不同曝光度的圖像的映射函數,我們稱為亮度轉換函數(BTF)。給定曝光率 \(k_i\) 和 亮度轉換函數 \(g\),我們可以映射輸入圖像 \(P\) 到曝光集合中的第 \(i\) 個圖像:
\[ P_i=g(P, k_i) \]
在本文中,我們僅以一定的曝光融合輸入圖像本身來降低複雜度,如圖2所示。融合圖像定義為:
\[ R^c=W*P^c+(1-W)*g(P^c,k) \]

增強問題可分為三個部分:\(W, g, k\) 的三個參數的估計。在以下小節中,我們將一一解決這三個問題。

2.2 權重矩陣估計

\(W\) 是增強算法的關鍵,其目的是增強曝光不足區域的低對比度,而保留曝光良好區域的對比度。我們需要給曝光良好的像素分配較大的權重值,給曝光不足的像素分配較小的權重值。直觀地來說,權重矩陣與場景光照正相關。由於高度光照區域有更大的可能性獲得更好的曝光,應分配給大的權重值以保持它們的對比度。我們計算權重矩陣為:
\[ W=T^{\mu} \]
其中 \(T\) 是場景光照圖,\(\mu\) 是控制增強程度的參數。場景光照估計位置映射 \(T\) 通過優化的方法解決。

(1)優化問題

亮度分量可以作為場景光照的估計。我們採用亮度分量作為光照估計的初始值:
\[ L(x)=max _{c\in \{R,G,B\}}P_c(x) \]
對於每個單獨的像素x。理想照明在結構相似的區域具有局部一致性。換句話說,\(T\) 應該保持有意義的圖像的結構並去除紋理邊緣。在文獻[5]中,我們可以通過最優方程得到 \(T\)
\[ \min _{\mathbf{T}}\|\mathbf{T}-\mathbf{L}\|_{2}^{2}+\lambda\|\mathbf{M} \circ \nabla \mathbf{T}\|_{1} \]
其中 \(\|*\|_2\)\(\|*\|_1\) 分別是 \(\ell_2\)\(\ell_1\) 范數。一階微分濾波器 \(\nabla\) 包含水平方向梯度 \(\nabla_h\mathbf{T}\) 和垂直方向梯度 \(\nabla_v\mathbf{T}\)\(M\) 是權重矩陣,\(\lambda\) 是係數。方程式的第一項最小化初始圖 \(\mathbf{L}\)和場景光照圖\(\mathbf{T}\),而第二項為保證 \(\mathbf{T}\) 的平滑性。

\(\mathbf{M}\) 的設計對於光照圖的細化很重要。局部窗口中的主要邊緣比具有複雜圖案的紋理貢獻了更多的相似方向梯度。因此,包含有意義的邊緣窗口中的權重應小於僅包含一個窗口的邊緣紋理。因此,我們將權重矩陣設計為
\[ \mathbf{M}_{d}(x)=\frac{1}{\left|\sum_{y \in \omega(x)} \nabla_{d} \mathbf{L}(y)\right|+\epsilon}, \quad d \in\{h, v\} \]
其中\(| ∗ |\) 是絕對值運算符,\(\omega(x)\) 是以像素 \(x\)\(\epsilon\) 是一個很小的常數,以避免分母為零。

(2)封閉解

為了簡化複雜度,我們將Eq.6近似為在文獻[5]中公式:
\[ \min _{\mathbf{T}} \sum_{x}\left((\mathbf{T}(x)-\mathbf{L}(x))^{2}+\lambda \sum_{d \in\{h, v\}} \frac{\mathbf{M}_{d}(x)\left(\nabla_{d} \mathbf{T}(x)\right)^{2}}{\left|\nabla_{d} \mathbf{L}(x)\right|+\epsilon}\right) \]
可以看出,該式子現在僅涉及二次項。 令\(md\)\(l\)\(t\)\(\nabla_dl\) 分別表示向量化的\(\mathbf{M}_d\)\(\mathbf{L}\)\(\mathbf{T}\)\(\nabla_d \mathbf{L}\)。 然後可以通過求解以下線性函數直接獲得解
\[ \left(\mathbf{I}+\lambda \sum_{d \in\{h, v\}}\left(\mathbf{D}_{\mathbf{d}}^{\top} \operatorname{Diag}\left(\mathbf{m}_{d} \oslash\left(\left|\nabla_{d} \mathbf{l}\right|+\epsilon\right)\right) \mathbf{D}_{\mathbf{d}}\right) \mathbf{t}=1\right. \]
其中\(\varnothing\)是按元素劃分,\(\mathbf{I}\) 是單位矩陣,運算符 \(Diag(v)\) 是用向量 \(v\) 構造對角矩陣,\(\mathbf{D}_d\) 是Toeplitz矩陣來自具有前向差異的離散梯度算子。我們的光照圖估計方法和文獻[5]的主要區別是設計矩陣\(\mathbf{M}\) 的權重。我們採用了簡化的策略,可以產生在文獻[5]中相似的結果。基於Retinex的其他光照分解技術方法可以運用到這裏來找到權重矩陣 \(\mathbf{W}\)

2.3 相機響應模型

在我們的早期工作中,我們提出了一個稱為Beta-Gamma的相機響應模型校正模型在文獻[[16]中。我們模型的BTF定義為:
\[ g(\mathbf{P},k)=\beta\mathbf{P^{\gamma}}=e^{b(1-k^a)\mathbf{P^{(k^a)}}} \]
其中 \(\beta\)\(\gamma\) 是該模型的兩個參數,可以通過相機參數 \(a\)\(b\) 和曝光率 \(k\) 計算得到。我們假設沒有任何相機信息,並使用固定相機參數(\(a = -0.3293\)\(b = 1.1258\))可以適配大多數相機。

2.4 確定曝光率

在本小節中,我們找到最佳的曝光率,以便合成圖像在原始圖像曝光不足的區域中曝光良好。第一,我們排除曝光良好的像素,並獲得整體上低曝光圖像。我們只需提取低光照像素為:
\[ \mathbf{Q}=\{\mathbf{P}(x)\mathbf{T}(x)<0.5\} \]
其中 \(\mathbf{Q}\) 僅包含曝光不足的像素。不同曝光下圖像的亮度變化很大但是顏色基本相同。因此,我們在估計 \(k\) 只考慮了亮度分量。亮度分量 \(\mathbf{B}\) 定義為三個通道的幾何平均值:
\[ \mathbf{B}:=\sqrt[3]{\mathbf{Q}_r\circ\mathbf{Q}_g\circ\mathbf{Q}_b} \]
其中\(\mathbf{Q}_r\)\(\mathbf{Q}_g\)\(\mathbf{Q}_b\) 分別是輸入圖像 \(\mathbf{Q}\) 的紅色,綠色和藍色通道。 我們使用幾何平均值代替其他定義(例如算術平均值和加權算術平均值),因為它具有相同的BTF所有三個顏色通道的模型參數( \(\beta\)\(\gamma\)),如下所示:
\[ \begin{aligned} \mathbf{B}^{\prime} &:=\sqrt[3]{\mathbf{Q}_{r}^{\prime} \circ \mathbf{Q}_{g}^{\prime} \circ \mathbf{Q}_{b}^{\prime}} \\ &=\sqrt[3]{\left(\beta \mathbf{Q}_{r}^{\gamma}\right) \circ\left(\beta \mathbf{Q}_{g}^{\gamma}\right) \circ\left(\beta \mathbf{Q}_{b}^{\gamma}\right)}=\beta(\sqrt[3]{\mathbf{Q}_{r} \circ \mathbf{Q}_{g} \circ \mathbf{Q}_{b}})^{\gamma} \\ &=\beta \mathbf{B}^{\gamma} \end{aligned} \]
曝光良好的圖像的可見度高於曝光不足的圖像,它可以為人類提供更豐富的信息。因此,最優的 \(k\) 應該提供最多的信息。為了衡量信息的數量,我們使用圖像熵來定義:
\[ \mathcal{H}(\mathbf{B})=-\sum_{i=1}^{N} p_{i} \cdot \log _{2} p_{i} \]
其中 \(p_i\) 是B的直方圖的第i個bin,用於計算數據數量在 \([\frac{i}{N},\frac{i=1}{N}]\),N是bin數( \(N\) 通常設置為256)。最後,通過最大化圖像增強的亮度熵來計算最佳 \(k\) 值:
\[ \hat{k}=\underset{k}{\operatorname{argmax}} \mathcal{H}(g(\mathbf{B}, k)) \]
最優的 \(k\) 值可以通過一維最小化求解。為了改善計算效率,我們在優化 \(k\) 時將輸入圖像的大小調整為 \(50 \times 50\)

3. 實驗對比

為了評估我們方法的性能,我們在公開數據集與幾種最新技術(AMSR [9],LIME [5],Dong [4]和NPE [14])進行比較。這五個公共數據集分別為:VV,LIME-data [5],NPE [14](NPEdata,NPE-ex1,NPE-ex2和NPE-ex3),MEF [10]和IUS [8]。 MEF和IUS是多重曝光數據集,我們從每個多重曝光中選擇一個弱光圖像進行評估。

3.1 實驗細節

在我們的算法中,\(\mu\) 是控制整體增強程度的參數。當\(\mu = 0\)時,所得 \(\mathbf{R}\) 等於 \(\mathbf{P}\),即沒有增強效果。 當時,曝光不足像素和曝光良好像素均被增強。 當 \(\mu> 1\) 時,像素可能會飽和,從而導致 \(R\) 遭受細節損失。 為了更好的增強,同時保留曝光良好的區域,我們將 \(\mu\) 設置為1/2。

為了保持比較的公平性,我們增強算法的參數在所有實驗中都是固定的:\(\lambda = 1\)\(\epsilon=0.001\)\(\mu= 1/2\),和局部窗口\(\omega(x)\)的大小為5。我們算法中最耗時的部分是光照圖的優化。 我們採用多分辨率共軛梯度 \((\mathbf{O}(N))\) 來有效地求解它。 為了進一步加快我們的算法,我們通過對輸入圖像進行下採樣方法解決 \(\mathbf{T}\),然後將生成的 \(\mathbf{T}\) 向上採樣到原始大小。 如果我們向下採樣一次,增強結果中沒有視覺差異,但是計算效率大大提高了。

3.2 對比度失真

如前所述,僅曝光度不同的圖像可用作參考來評估增強結果準確性。 DRIM(動態範圍獨立指標)[1]可以測量圖像對比度的失真,而無需考慮圖像亮度變化。 我們用它來可視化對比增強結果與參考圖像之間的差異。

如圖3所示,該方法得到失真最小的結果。 Dong的結果出現嚴重的對比度失真。 儘管AMSR可以恢復細節,但對比度明顯下降使結果看起來暗淡和虛幻。 相比之下,LIME的結果看起來像有點生動,但它們會導致放大不可見的對比度。 圖5显示更多示例在視覺上進行比較。

3.3 亮度失真

我們用我們使用亮度等級誤差(LOE)客觀地衡量增強結果的亮度失真。 LOE定義為:
\[ LOE=\frac{1}{m}\sum_{x=1}^{m}RD(x) \]
對於像素 \(x\), 其中 \(RD(x)\) 是原始圖像 \(P\) 和增強后\(P^{‘}\) 之間的相對亮度階差,其定義如下:
\[ RD(x)=\sum_{y=1}^{m} U(\mathbf{L}(x), \mathbf{L}(y)) \oplus U\left(\mathbf{L}^{\prime}(x), \mathbf{L}^{\prime}(y)\right) \]
其中 \(m\) 是像素數量,\(\oplus\) 表示異或運算符,\(\mathbf{L}(x)\)\(\mathbf{L}^{\prime}(x)\) 分別是輸入圖像和增強后位置 \(x\) 處的亮度分量。 如果 \(p>= q\),函數 \(U(p,q)\) 返回1,其他情況為0。

正如[5,14]中所建議的那樣,下採樣用於計算LOE降低複雜度。 由於RD將隨着像素數量m的增加而增加,我們注意到LOE隨着圖片下採樣為不同尺寸而變化。 因此,我們將所有圖像下採樣到固定大小。 具體來說,我們均勻收集100行和列,以形成 \(100\times100\) 的下採樣圖像。如表1所示,我們的算法在所有數據集中均優於其他算法。 這個意味着我們的算法可以很好地保持圖像的自然性。 我們也提供了圖4中兩種情況的亮度失真的可視化,從中我們可以發現我們的結果具有最小的亮度失真。AMSR的結果失去了全局的亮度等級,並具有最大的亮度失真。儘管LIME的結果在視覺上令人愉悅,但它們也存在亮度不足的失真。 Dong和NPE的結果只能在曝光良好的區域保留亮度順序。

4. 結論

在本文中,我們提出了曝光融合框架和增強算法提供精確的對比度增強的算法。 基於我們的框架,我們解決了三個問題:(1)我們借鑒了光照估算技術獲得圖像融合的權重矩陣。(2)通過相機響應模型來合成多重曝光圖像。(3)我們找到了最好的曝光率,使合成圖像在原始圖像曝光不足的區域曝光良好。 最終的增強結果是通過融合根據權重矩陣對輸入圖像和合成圖像進行處理。實驗結果表明我們方法相比現階段最先進的方案的有效性。
可以在我們的項目網站上找到更多測試結果:。

5. 主要參考文獻

  1. Aydin, T.O., Mantiuk, R., Myszkowski, K., Seidel, H.P.: Dynamic range independent image quality assessment. ACM Trans. Graph. (TOG) 27(3), 69 (2008)
  2. Beghdadi, A., Le Negrate, A.: Contrast enhancement technique based on local detection of edges. Comput. Vis. Graph. Image Process. 46(2), 162–174 (1989)
  3. Chen, S.D., Ramli, A.R.: Minimum mean brightness error bi-histogram equalization in contrast enhancement. IEEE Trans. Consum. Electron. 49(4), 1310–1319(2003)
  4. Dong, X., Wang, G., Pang, Y., Li, W., Wen, J., Meng, W., Lu, Y.: Fast efficient algorithm for enhancement of low lighting video. In: 2011 IEEE International Conference on Multimedia and Expo, pp. 1–6. IEEE (2011)
  5. Guo, X.: Lime: a method for low-light image enhancement. In: Proceedings of the 2016 ACM on Multimedia Conference, pp. 87–91. ACM (2016)
  6. Ibrahim, H., Kong, N.S.P.: Brightness preserving dynamic histogram equalization for image contrast enhancement. IEEE Trans. Consum. Electron. 53(4), 1752–1758 (2007)
  7. Jobson, D.J., Rahman, Z., Woodell, G.A.: A multiscale retinex for bridging the gap between color images and the human observation of scenes. IEEE Trans. Image Process. 6(7), 965–976 (1997)
  8. Karaduzovic-Hadziabdic, K., Telalovic, J.H., Mantiuk, R.: Subjective and objective evaluation of multi-exposure high dynamic range image deghosting methods (2016)
  9. Lee, C.H., Shih, J.L., Lien, C.C., Han, C.C.: Adaptive multiscale retinex for image contrast enhancement. In: 2013 International Conference on Signal-Image Technology & Internet-Based Systems (SITIS), pp. 43–50. IEEE (2013)
  10. Ma, K., Zeng, K., Wang, Z.: Perceptual quality assessment for multi-exposure image fusion. IEEE Trans. Image Process. 24(11), 3345–3356 (2015)
  11. Peli, E.: Contrast in complex images. JOSA A 7(10), 2032–2040 (1990)
  12. Reza, A.M.: Realization of the contrast limited adaptive histogram equalization (clahe) for real-time image enhancement. J. VLSI Signal Process. Syst. Signal Image Video Technol. 38(1), 35–44 (2004)
  13. Wang, C., Ye, Z.: Brightness preserving histogram equalization with maximum entropy: a variational perspective. IEEE Trans. Consum. Electron. 51(4), 1326– 1334 (2005)
  14. Wang, S., Zheng, J., Hu, H.M., Li, B.: Naturalness preserved enhancement algorithm for non-uniform illumination images. IEEE Trans. Image Process. 22(9), 3538–3548 (2013)
  15. Xu, L., Yan, Q., Xia, Y., Jia, J.: Structure extraction from texture via relative total variation. ACM Trans. Graph. (TOG) 31(6), 139 (2012)
  16. Ying, Z., Li, G., Ren, Y., Wang, R., Wang, W.: A new low-light image enhancement algorithm using camera response model, manuscript submitted for publication (2017)

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

南投搬家前需注意的眉眉角角,別等搬了再說!

Google 將與FCA合作測試自動駕駛 公開私人測試跑道

Google自動駕駛汽車項目和菲亞特克萊斯勒(FCA)已經宣佈,將把Google的自動駕駛技術融入到全新的2017款克萊斯勒Pacifica混動力廂式旅行車,擴大Google現有的自動駕駛測試項目。

這是Google第一次與汽車製造商直接合作,將包括感測器和軟體在內的自動駕駛系統整合到一輛自小客車中。

克萊斯勒Pacifica混動力廂式旅行車將在今年稍後用於Google的自動駕駛測試,測試的數量是Google現有測試車輛的兩倍還多。

工程責任將根據每個公司的特長來進行共擔。FCA最初將會設計和研發大約100輛適配Google自動駕駛技術的汽車。

Google將對感測器和電腦套件進行整合,讓車輛能夠自動駕駛。

兩家公司將共同派出一部分工程師團隊前往密歇根州東南部的一個工廠,以便加快自動駕駛版本的克萊斯勒Pacifica的設計、測試和製造。Google的自動駕駛汽車目前正在美國的四個城市進行測試。

自動駕駛版本克萊斯勒Pacifica混動力廂式旅行車在上公共道路行駛之前,將由Google的自動駕駛汽車測試團隊在其加州的私人跑道上進行測試。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家費用,距離,噸數怎麼算?達人教你簡易估價知識!