使用計(jì)算機(jī)視覺轉(zhuǎn)換水彩藝術(shù)中的圖像
介紹
在本文中,我們將研究能夠?qū)D像更改為水彩藝術(shù)形式的應(yīng)用程序,我們將僅使用計(jì)算機(jī)視覺操作,即不涉及任何機(jī)器學(xué)習(xí)技術(shù),僅涉及精細(xì)的圖像處理技術(shù)。
計(jì)算機(jī)視覺的現(xiàn)實(shí)應(yīng)用
因此,在討論該方法并跳轉(zhuǎn)到代碼部分之前,讓我們首先討論一下該項(xiàng)目中使用的技術(shù)如何在實(shí)際場景中提供幫助。
1.將圖像卡通化:雖然在這個問題陳述中我們將研究水彩藝術(shù),但最重要的是,如果我們能夠微調(diào)參數(shù),我們只需要復(fù)習(xí)相關(guān)的概念就可以解決這個問題。
2.應(yīng)用過濾器:我們可以使用相同的技術(shù)選擇各種過濾器,從人工智能市場的角度來看,這對 VR/AR 公司來說非常有用。
3.修改圖像:現(xiàn)在市場上開發(fā)了許多應(yīng)用程序,這些應(yīng)用程序給圖像帶來了多種多樣的效果,而這種濾波圖像處理無疑有助于這些應(yīng)用程序。
處理此問題的方法
在本文的這一部分中,我們將列出開發(fā)應(yīng)用程序的所有有效步驟/階段,該應(yīng)用程序?qū)⑹褂糜?jì)算機(jī)視覺操作將我們的原始圖像轉(zhuǎn)換為水彩效果藝術(shù)。
階段 1:輸入圖像并調(diào)整其大。何覀兌贾牢覀冃枰粋圖像來執(zhí)行計(jì)算機(jī)視覺概念,但是調(diào)整它的大小背后有一個嚴(yán)格的邏輯,讓我們舉個例子來解釋這個原因,假設(shè)你將對一個圖像的唯一分布進(jìn)行操作,我們將使用3×3內(nèi)核對圖像進(jìn)行操作,而在這種情況下,3×3內(nèi)核將對圖像的唯一分布進(jìn)行不同的操作,以消除這種復(fù)雜性,并確保在每種類型的圖像中,我們的結(jié)果應(yīng)該是相同的,使用resize函數(shù)是一個很好的實(shí)踐,這樣我們的內(nèi)核操作就可以有效地完成。
階段 2:清除雜質(zhì):在這個階段,我們將清除所有雜質(zhì),由于顏色變化,圖像中的雜質(zhì)將滯后于操作?赡苁前唿c(diǎn)或不均勻的像素分布,可能導(dǎo)致應(yīng)用過濾器的延遲。為了從圖像中去除這些雜質(zhì),我們有足夠的功能,我們將在本階段詳細(xì)討論它們。
階段 3:應(yīng)用過濾:在這個階段,我們將對這個特定問題陳述中的圖像應(yīng)用我們想要的過濾器。我們將應(yīng)用這些過濾技術(shù),將真實(shí)圖像轉(zhuǎn)換為水彩畫效果。為此,我們將執(zhí)行一些過濾技術(shù),如高斯或雙邊過濾。
階段 4:調(diào)整藝術(shù):在這個階段,我們將調(diào)整以提供更精確的過濾結(jié)果,假設(shè)在應(yīng)用所需的過濾器后,我們獲得了模糊效果,以便去除我們將應(yīng)用的圖像銳化,如果我們得到的結(jié)果顯示了一些松散的顏色,那么我們將通過管理圖像的顏色對比度來應(yīng)用去霧操作,從而獲得結(jié)果的精細(xì)形式
導(dǎo)入庫
import cv2
import numpy as np
import matplotlib.pyplot as plt
階段 1:讀取圖像并調(diào)整大小
在這里,我們將首先讀取示例圖像并調(diào)整其大小,為了獲得更好的體驗(yàn),我們將使用兩個示例圖像來仔細(xì)檢查我們的結(jié)果。
image = cv2.imread('sample.jpg')
plt.figure(figsize = [10, 10])
plt.title("Image");plt.a(chǎn)xis('off');plt.imshow(image[:,:,::-1]);plt.show()
輸出:
image = cv2.imread('sample2.jpg')
plt.figure(figsize = [10, 10])
plt.title("Image");plt.a(chǎn)xis('off');plt.imshow(image[:,:,::-1]);plt.show()
輸出
代碼分解:
在這里,我們首先使用read函數(shù)讀取了圖像,請注意圖像類型是**.webp**。
然后我們使用 Matplotlib 庫中的figure函數(shù)來設(shè)置圖形大小。
最后,我們將使用show方法簡單地顯示圖像。
調(diào)整圖像大小
image_resized = cv2.resize(image, None, fx=0.5, fy=0.5)
關(guān)于resize函數(shù)
在這里,我們正在調(diào)整圖像的大小,以便特定大小(比如 3×3)的內(nèi)核將給出相同的結(jié)果,而與圖像的分布無關(guān)。密切關(guān)注我們在 resize 函數(shù)中給出的參數(shù)。
image:這里我們傳遞我們想要調(diào)整大小的圖像。
fx:這將有助于將 x 軸減半(因?yàn)橹禐?0.5)。
fy:這將有助于將 y 軸減半(因?yàn)橹禐?0.5)。
None:此選項(xiàng)會將高度和寬度操作設(shè)置為無,因?yàn)槲覀冎皇歉膱D像的軸。
階段 2:去除/清除雜質(zhì)
現(xiàn)在是我們清除雜質(zhì)部分,我們將使用中值模糊算法,但稍后我們將應(yīng)用雙邊過濾。
image_cleared = cv2.medianBlur(image_resized, 3)
image_cleared = cv2.medianBlur(image_cleared, 3)
image_cleared = cv2.medianBlur(image_cleared, 3)
image_cleared = cv2.edgePreservingFilter(image_cleared, sigma_s=5)
代碼分解
1.在查看代碼時,一個問題是確定的,即為什么我對圖像進(jìn)行了三次過濾?
· 答:我們想要過濾最多的圖像,因此,我們需要過濾相同的圖像多次(這里是三次),因此現(xiàn)在我們可以相對地獲得過濾次數(shù)更多的圖像。
2.除了中值模糊過濾外,我們還將研究邊緣保留過濾,它負(fù)責(zé)保持整個圖像的恒定顏色分布。
階段 3:雙邊圖像過濾
高斯濾波和雙邊圖像濾波之間的主要區(qū)別在于,在高斯模糊中,它只適用于圖像的模糊,即只考慮空間(不保留角點(diǎn)),但在雙邊濾波中,我們將使用圖像的高斯核,這將反過來聚焦于更強(qiáng)烈的圖像,并將保留角點(diǎn)。
image_filtered = cv2.bilateralFilter(image_cleared, 3, 10, 5)
for i in range(2):
image_filtered = cv2.bilateralFilter(image_filtered, 3, 20, 10)
for i in range(3):
image_filtered = cv2.bilateralFilter(image_filtered, 5, 30, 10)
代碼分解
在分解代碼之前,我們需要了解為什么我們使用循環(huán)進(jìn)行雙邊過濾?
答:因?yàn)槿绻覀円淮涡栽黾訁?shù)值,那么我們將獲得卡通圖像而不是水彩藝術(shù),這不是我們的目標(biāo),因此我們正在循環(huán)應(yīng)用過濾并逐漸增加 sigma 空間的值。
參數(shù) Bilateral filtering:
1.Source:需要過濾的源圖像。
2.D:D是每個像素的直徑值(這里是3/5)。
3.Sigma 顏色:Sigma 顏色的值越大,顏色混合得越深。
4.Sigma 空間:Sigma 空間的值越大,空間越寬的顏色就會開始混合。
階段 4:調(diào)整藝術(shù) - 銳化圖像
所以,當(dāng)我們使用雙邊濾波時,它用來模糊圖像。它保留了圖像的一角,并將其轉(zhuǎn)換為模糊形式,以便消除這種情況,獲得更清晰的輸出,我們用來銳化圖像。
gaussian_mask= cv2.GaussianBlur(image_filtered, (7,7), 2)
image_sharp = cv2.a(chǎn)ddWeighted(image_filtered, 1.5, gaussian_mask, -0.5, 0)
image_sharp = cv2.a(chǎn)ddWeighted(image_sharp, 1.4, gaussian_mask, -0.2, 10)
代碼分解:
1.首先在高斯模糊的幫助下,我們將減去圖像的一部分以獲得高斯蒙版。
2.然后使用上面的高斯蒙版,我們將使用weighted()函數(shù)銳化圖像,如果你注意到參數(shù),我們正在嘗試不同的alpha 和 gamma值以獲得所需的結(jié)果。
使用計(jì)算機(jī)視覺顯示圖像
plt.figure(figsize=[30,30])
plt.subplot(131);plt.imshow(image_sharp[:,:,::-1]);plt.title("Final Image");plt.a(chǎn)xis('off');
plt.subplot(132);plt.imshow(image_cleared[:,:,::-1]);plt.title("Clear Impurities");plt.a(chǎn)xis('off');
plt.subplot(133);plt.imshow(image[:,:,::-1]);plt.title("Original");plt.a(chǎn)xis('off');
輸出 1:
輸出 2:
代碼分解
正如我們之前在文章中已經(jīng)討論過繪制圖像一樣,因此可以參考。這部分只有一點(diǎn)需要注意,這是一個子圖,將圖像的部分分為三個部分:
1.最終圖像
2.清除雜質(zhì)
3.原圖
關(guān)于計(jì)算機(jī)視覺的結(jié)論
因此,從上面的輸出中,你可以看到圖像已轉(zhuǎn)換為水彩畫,你可以使用相同的過程和圖像處理技術(shù)轉(zhuǎn)換你想要的任何圖像,為了確保圖像質(zhì)量足夠好,可以應(yīng)用過濾器。
1.在這里,我們學(xué)到的第一件事是關(guān)于調(diào)整大小的功能,這非常重要。
2.然后我們開始了解不同的算法和概念,這些算法和概念有助于清除圖像中的雜質(zhì)。
3.最后,我們了解了如何對處理進(jìn)行最后的處理,即調(diào)整圖像,以提高結(jié)果的質(zhì)量。
原文標(biāo)題 : 使用計(jì)算機(jī)視覺轉(zhuǎn)換水彩藝術(shù)中的圖像

請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺
- 4 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 5 國產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來商業(yè)化突破,但落地仍需時間
- 7 東陽光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長空間
- 8 地平線自動駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?