Element UI是一個用于開發現代化Web應用的高質量前端框架,它提供了豐富的組件,幫助開發者快速構建用戶界面。在這些組件中,el-image組件不僅能優雅地展示圖片,還擁有強大的圖片放大功能。在本文中,我們將詳細探討如何使用Element UI中的el-image組件實現圖片放大功能,并介紹一些優化和使用技巧。
在使用el-image組件之前,首先需要引入和安裝Element UI。如果你還沒有安裝Element UI,可以通過以下方式進行安裝:
1. 使用npm安裝
npm install element-ui --save
2. 引入Element UI
在你的主文件(例如main.js)中引入Element UI和其樣式:
import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
el-image組件提供了一個簡潔的接口,可以方便地展示圖片。我們先了解一下它的基本用法:
1. 基本用法
在你的Vue組件中使用el-image標簽:
<template>
<div>
<el-image src="https://example.com/sample-image.jpg" />
</div>
</template>
<script>
export default {
name: "ImageViewer",
};
</script>
這段代碼展示了一張簡單的圖片。src屬性指定了圖片的來源。
2. 支持大圖片預覽
el-image組件默認支持大圖片預覽功能,只需設置preview-src-list屬性即可:
<template>
<div>
<el-image
src="https://example.com/sample-image.jpg"
:preview-src-list="['https://example.com/sample-image.jpg']"
/>
</div>
</template>
<script>
export default {
name: "ImageViewer",
};
</script>
當你點擊圖片時,會自動進入預覽模式,支持放大和縮小操作。
1. 懶加載
圖片加載是Web應用性能優化中一個重要的環節,特別是當頁面上有大量圖片時。el-image組件支持懶加載功能,只需設置lazy屬性:
<template>
<div>
<el-image
src="https://example.com/sample-image.jpg"
lazy
/>
</div>
</template>
<script>
export default {
name: "ImageViewer",
};
</script>
懶加載能夠提高頁面初始加載速度,特別是在多圖頁面上效果尤為明顯。
2. 縮略圖與放大功能結合
可以通過thumbnail和large模式的結合來實現縮略圖與大圖的無縫銜接:
<template>
<div>
<el-image
src="https://example.com/sample-thumbnail.jpg"
:preview-src-list="['https://example.com/sample-image.jpg']"
fit="cover"
/>
</div>
</template>
<script>
export default {
name: "ImageViewer",
};
</script>
在這個示例中,縮略圖會以 cover 模式適應容器大小,點擊后展示大圖。
3. 自定義加載中和加載失敗的圖標
el-image還支持自定義加載中和加載失敗的圖標:
<template>
<div>
<el-image
src="https://example.com/sample-image.jpg"
lazy
:preview-src-list="['https://example.com/sample-image.jpg']"
:loading="loadingImage"
:error="errorImage"
/>
</div>
</template>
<script>
export default {
name: "ImageViewer",
data() {
return {
loadingImage: 'https://example.com/loading.gif',
errorImage: 'https://example.com/error.png',
};
},
};
</script>
這樣,當圖片加載或加載失敗時,會展示自定義的圖片。
4. 多圖輪播與放大
你可以利用el-image的preview-src-list屬性,實現多圖輪播與放大預覽:
<template>
<div>
<el-image
src="https://example.com/sample-thumbnail.jpg"
:preview-src-list="[
'https://example.com/sample-image1.jpg',
'https://example.com/sample-image2.jpg',
'https://example.com/sample-image3.jpg'
]"
fit="cover"
/>
</div>
</template>
<script>
export default {
name: "ImageViewer",
};
</script>
點擊圖片后會進入預覽模式,支持在多張圖片間切換和放大查看。
1. 結合響應式布局
在實際開發中,我們往往需要圖片在不同設備上自適應尺寸,Element UI中的el-image可以配合CSS的響應式布局實現:
<template>
<div>
<el-image
class="responsive-image"
src="https://example.com/sample-image.jpg"
:preview-src-list="['https://example.com/sample-image.jpg']"
fit="cover"
/>
</div>
</template>
<style scoped>
.responsive-image {
width: 100%;
height: auto;
}
</style>
<script>
export default {
name: "ImageViewer",
};
</script>
2. 性能優化
當頁面有大量圖片時,建議使用懶加載功能,并結合CDN加快圖片加載速度。還可以通過圖片壓縮技術減少圖片體積,提高加載速度。
3. 避免阻塞主線程
在初始化大量圖片時,確保每次只加載一定數量的圖片,避免阻塞主線程。可以通過分段加載或虛擬滾動技術來優化用戶體驗。
Element UI中的el-image組件提供了便捷且強大的圖片展示及放大功能。通過本文介紹的基本用法和進階技巧,你可以在Vue項目中更好地使用和優化圖片展示功能。無論是在開發電商網站還是攝影展示平臺,el-image組件都能助你一臂之力,帶來更佳的用戶體驗。希望本文對你有所幫助,祝你在Vue開發中取得更多成就!
大家好,這是專欄《計算攝影》的第二篇文章,這一個專欄來自于計算機科學與攝影藝術的交叉學科。今天我們討論的問題是圖像美學評估問題。
作者&編輯 | 言有三
1.1 美學的定義
牛津高階英語詞典將美學定義為:“concerned with beauty and art and the understanding of beautiful things, and made in an artistic way and beautiful to look at。”
所謂圖像美學,其實就是研究視覺感知美的度量,又可稱為計算機美學,對應的英文描述包括computer aesthetics,photo aesthetics等。
圖像美學與圖像的顏色、光影、構圖、虛實等因素密不可分,并與圖像的語義內容也很相關。鑒于美學的抽象性和主觀性,即使專業攝影師也難以說明哪些特征對圖像的美學質量影響更大。雖然美學難以描述,但攝影師們仍然總結出了一些通用的攝影規則和技術來調整圖像的顏色、光照、構圖、景深等因素來獲得更具有視覺吸引力的圖像,也就是美學質量更高的圖像。
1.2 圖像美學的應用
圖像美學質量評價在許多應用中顯示出了越來越重要的作用,如圖像檢索、照片增強、相冊管理等。
(1) 圖像檢索
當前圖像搜索引擎根據用戶的查詢檢索到大量的相關結果,然而位于前面的搜索結果有時候不具有視覺吸引力。在這種情況下,用戶需要瀏覽更多結果以找到與檢索內容相關又具有視覺吸引力的結果,尤其是在攝影網站。
(2) 自動照片增強
用戶進行后期編輯如果想要得到更具視覺吸引力的圖像,通常需要有一定的攝影和美學知識。對普通用戶來說,他們往往不清楚哪些元素需要修改以及如何修改它們才能使圖像更具吸引力。在這種情況下,自動增強圖像美學質量的自動照片編輯工具是非常有用的。一個常見的實現方法是在兩個圖像編輯操作之間進行迭代并評估美學質量,直到選擇最好的。
(3) 照片篩選以及相冊管理
個人照片數量激增產生了一個問題:手動管理大量照片會很耗時,因此開發自動有效的照片選擇和管理工具是很有必要的。一般人選擇照片的過程會依據美學標準進行,因此美學質量評價在其中有著重要的作用。
由此可見,圖像美學質量評價算法已經滲透到了人們生活的各個方面。
接下來我們來講述如何研究美學這個問題,包括數據集以及不同的研究維度。
2.1 美學數據集
由于美學的主觀性較強,創建一個帶有主觀美學標簽的數據集難度是很大的,但圖像美學質量評價基準數據集的構建是該方向研究的關鍵前提條件。
下面介紹幾個常用的圖像美學數據集。
(1) The CUHK-Photo Quality (CUHK-PQ)
這個數據集包含從 DPChallenge.com 上收集的 17690 張圖片,每張圖片都有8-10個人為其標注為高質量或低質量的標簽,圖片被分組成 7 個場景類別,即“動物”“植物”“靜物”“建筑”“風景”“人物”和“夜景”。
CUHK-PQ數據集里高質量的圖片是從專業的攝影網上獲取,而低質量的圖片則是由在校學生提供。
(2) The Photo.Net dataset
PN數據集包含20278張圖片,圖片均來自于社交網絡https://www.photo.net/。每張圖片由社交網絡的在線用戶進行評分,評分范圍從 0 到 7,7 為最美觀的照片,每張圖片均有兩個及以上的用戶對其進行評分。
(3) The Aesthetic Visual Analysis (AVA) dataset
AVA數據集包含255000張圖片,這些照片是http://DPChallenge.com上獲取的。每張圖片由78~549名評分者得分,分數范圍為1到10,平均分作為每張圖片的真值標簽。
數據集作者根據每張圖片的本文信息,為每張圖片都標注了1至2個語義標簽。整個數據集總共有66種文本形式的語義標簽。出現頻率較高的語義標簽有:Nature,Black and White,Landscape,still-life等。
AVA數據集中的圖片還做了攝影屬性標注,一共有14個攝影屬性,分別是Complementary Colors ( 補色 ), Duotones ( 雙色調 ), High Dynamic Range ( 高對比度 ), Image Grain ( 紋理圖 ), Light on White ( 亮白 ), Long Exposure ( 長曝光 ), Macro ( 微距 ), Motion Blur ( 運動模糊 ), Negative Image ( 負片 ), Rule of Thirds ( 三分法 ), Shallow DOF ( 淺景深 ), Silhouettes ( 剪影 ), Soft Focus ( 軟焦 ), Vanishing Point ( 消失點 )。
下圖為AVA數據集中的示例圖像(綠色框內平均分大于5的圖像,紅色框內為平均分小于5的圖像,兩個框內右邊的圖像都是平均分在5左右的)及圖像數量分布。
(4) The Aesthetic and Attributes DataBase (AADB)
AADB是 2016 年 Adobe 整理的數據集,可以說是 AVA 數據集的一個補充。該數據集有 10000張圖像 , 其中 8500 張圖像用于訓練,500 張圖像用于驗證,1000 張圖像用于測試。標注者有 5 個人,最終的結果取5個人的平均值,除了標注美學分數外,也標注了11個屬性,分別是:balancing elemen(t 是否有平衡元素),content(是否有好的內容),color harmony(顏色和諧性),depth of field(是否淺景深),lighting(是否有好的用光),motion blur(是否運動模糊),object emphasis(前景是否突出),rule of thirds(是否使用三分法),vivid color(豐富的顏色),repetition(有沒有重復模式),symmetry(是否有對稱性),下圖是一些示意圖。
(5) AVA-Reviews
2018 年復旦大學的 Wang 等人利用 AVA 數據集構建了 AVA-Reviews 數據集,包含了 AVA數據集中的 4 萬幅圖像,每幅圖像跟隨了 6 條語言評論,該文獻利用 CNN 與循環神經網絡(recurrent neural network,RNN)相結合的神經網絡結構同時預測圖像的美學分類與語言評論。
2.2 美學的研究維度
美學的研究可以是分類問題,回歸問題,以及排序問題。
最簡單的情況下,美學評估被看做二分類問題,即將圖像分為“高美學質量”和“低美學質量”,然后使用分類器進行學習。
如下圖第一排依次為高質量的動物圖,植物圖,建筑圖,風光圖,夜景圖,第二排為低質量的動物圖,植物圖,建筑圖,風光圖,夜景圖。
美學分類問題
雖然分類問題比較簡單,但我們更理想的目標是讓計算機像人類一樣預測美學分數。在一些應用中,需要按照美學分數將圖像排序,這時候我們需要得到更精細的美學得分而不是美學質量的粗粒度分類。
以 5 分為滿分,‘◆’表示得一分,下圖展示了美學評分的案例。
美學回歸問題
判斷單張圖片的美學類別或者美學分數是比較困難的,訓練出來的模型也容易過擬合,然而比較兩張圖片的相對美學,即一張圖是否比另一張圖更加好看,這更加簡單,也更加符合人類的常識。
美學排序問題
接下來我們主要從傳統的方法和深度學習方法兩個維度來介紹美學評估方法。
3.1 傳統方法
對于傳統方法,我們介紹其中具有代表性的兩個特征,分別是顏色特征,構圖特征等。
(1) 顏色特征
出色的攝影作品通常色調都非常簡潔和諧,這樣可以突出主要對象,而業余人士拍攝的照片通常看起來混亂,基于此研究人員提出過顏色和諧性等特征。另外攝影中色調常遵循單一色調、互補色,相鄰色等原理,如下圖。
因此可以采用平均顏色,顏色直方圖等作為特征。
(2) 構圖特征
除了顏色和光照會影響圖像的吸引力,對象的位置及其空間相互關系在圖像的美學質量中也起著重要作用。專業的攝影師有著豐富的構圖知識和技術。若保持對象的完整形狀,只是改變其空間位置,圖像的美學質量也會有很大變化。很多構圖特征都是受攝影規則啟發,如黃金分割法則、視覺平衡等,其中最廣泛使用的是三分構圖法則。
上圖展示的是一幅符合三分構圖法的圖片,圖中三條白線均勻將圖像劃分為三份,四個角則是交叉點,滿足三份構圖法的圖中最重要的主體會接近三條白線或者 4 個角,所以我們可以用主體偏離位置來作為構圖特征。
由于傳統的特征提取方法受限于專家知識和特征的表達能力,甚至有一些攝影知識難以用數學來描述,當前更好的做法是基于深度學習技術從數據集中自動學習美學相關特征。
3.2 深度學習方法
在前面我們給大家介紹過,美學評估問題可以作為分類問題,回歸問題,排序問題來進行研究,下面我們分別對這三類模型的發展進行簡單介紹。
(1) 分類模型
分類模型可以直接采用通用的圖像分類任務模型,由于美學數據集較小,可以采用預訓練的方式。
另外,還可以使用模型本身的多尺度信息,即融合不同層,不同感受野大小的特征來獲取全局和局部的特征,這在圖像分割模型 UNet 和目標檢測模型 SSD 中被證明可以有效改進模型的學習能力。
為了獲得更好的結果,Lu 等人提出了 RAPID 模型[1],它們將全局和局部 CNN 堆疊在一起形成雙列CNN(DCNN),分別輸入全圖和局部圖。全局圖有利于捕捉主體信息,而局部圖有利于捕捉局部細節。
而在 DMA-net(Deep Multi-Patch Aggregation Network) [2]中作者更進一步,將來自多個隨機采樣的圖像塊被送入包含 4 個卷積層和 3 個全連接層的單路卷積神經網絡。為了組合來自采樣圖像塊的特征輸出,設計了一個統計聚集結構 (odderless multi-patch aggregation), 在這個結構中使用了最小,最大,中值和平均池化方法對 CNN 的特征進行聚合,最后輸出 Softmax 概率到分類層。
此外為了避免縮放變形,Mai 等人[3]借鑒 SPPNet 中的自適應空間池化技術,在最后的卷積層之后,使用了多路不同感受野大小的固定長度的輸出,不僅有效地編碼了多尺度圖像信息,還可以在訓練和測試時適應任意大小的輸入。
基于分類的模型所處理的任務簡單,不過因為數據標注中的差異以及數據量的問題,模型容易產生過擬合。
(2) 回歸模型
一個基本的回歸模型與上述的分類模型結構一致,只是標簽和預測結果值由美學分類類別換成了具體的分數值,優化目標由交叉熵損失換成了歐式距離等損失。
另一方面,預測一個具體的美學分數很容易過擬合,因為不同人的標注結果有很大差異。在 AVA 數據集中,一張圖像的標注結果由多個人完成,因此標注結果是一個分布,而不是單一的值,下面兩張圖的平均分數相同,但是分布有較大差異。
基于這個特點,谷歌的研究團隊提出了 NIMA 系統[4],它預測美學的分數分布概率,分數值從 1 到 10。
后續研究者也按照類似的思路去研究該問題,其基本結構流程圖如下:
(3) 排序模型
前面說過判斷單張圖片的美學類別或者美學分數是比較困難的,然而比較兩張圖片的相對美學相對容易,因此排序模型[5]也是一種研究美學的方案,基本結構如下:
其中基礎網絡在美學數據集上預訓練并進行微調,使用歐式距離作為優化目標損失,預測結果是分數。然后Siamese 網絡對每個采樣圖像對的損失進行排序。
以上就是美學評估的基本模型,關于更多美學模型的解讀,讀者可以閱讀 Deng Yubin 等人在 2017 年撰寫的圖像美學評估綜述,《Image Aesthetic Assessment:An Experimental Survey》[6],以及學術界和工業界近年來的發展。
當前美學評分還面臨著一些難題。
(1) 美學的主觀性決定了圖像美學質量評價是一個非常具有挑戰性的任務。到目前為止,在圖像美學評估方面涌現出了很多具有競爭力的模型,但是這個領域的研究狀況還遠未達到飽和。人工設計的美學特征很難被量化,也不夠全面。深度學習方法具有強大的自動特征學習能力,成為現階段圖像美學質量評價的主流方法,但是如何學習到對適應各種風格的模型仍然是一個挑戰
(2) 將深度學習方法應用于圖像美學質量評價面臨的挑戰還包括圖像美學真值標簽的模糊性以及如何從有限的輔助信息中學習特定類別的圖像美學。圖像美學評估需要具有更豐富注釋的、規模更大的數據庫,其中每個圖像最好由具有不同背景的、數量更多的用戶標記。這樣一個龐大而又多樣化的數據集將有大大推動未來圖像美學質量評價模型的學習。
(3) 人的審美終究是有差異的,如何學習到個性化的審美也是一個必須解決的問題。
[1] Lu X, Lin Z, Jin H, et al. RAPID: Rating Pictorial Aesthetics using Deep Learning[C]. acm multimedia, 2014: 457-466.
[2] L u X, Lin Z, Shen X, et al. Deep Multi-patch Aggregation Network for Image Style, Aesthetics, and Quality Estimation[C]. international conference on computer vision, 2015: 990-998.
[3] M ai L, Jin H, Liu F, et al. Composition-Preserving Deep Photo Aesthetics Assessment[C]. computer vision and pattern recognition, 2016: 497-506.
[4] T alebi H, Milanfar P. Nima: Neural image assessment[J]. IEEE Transactions on Image Processing, 2018, 27(8): 3998-4011.
[5] Kong S, Shen X, Lin Z, et al. Photo Aesthetics Ranking Network with Attributes and Content Adaptation[J].
european conference on computer vision, 2016: 662-679.
[6] D eng Y, Loy C C, Tang X. Image aesthetic assessment: An experimental survey[J]. IEEE Signal Processing Magazine, 2017, 34(4): 80-106.
美學評估仍然是一個比較開放且或許永遠沒有標準答案的問題,但仍然有不少研究者對其保持著熱情,因為讓計算機能夠像人一樣理解美是一件非常有意思的事情。