【競賽01-b】【論文】濟南大學第七屆數學建模比賽A題論文詳解

筆者在18年五月底參加了濟南大學第七屆數學建模校賽,現在將論文貼出,在博文中,將整理出論文中核心的詳細知識點

基於 MATLAB 的數字圖像處理模型

1 摘要

本文利用 MATLAB 等工具對題目給出圖像進行數字化處理,通過均值法,權 值法,梯度值求解輪廓法,插值法,自動定位人臉等多種不同的方法實現了對問 題一到五的計算機求解和數學模型建立。

  • 對於問題一,將人臉部分的像素點三維矩陣分爲若干個小矩陣,對每個小矩 陣內的所有像素點賦予相同的 RGB值,即可得到馬賽克效果。爲了對比效果,分 別使用了均值法,左上角值法,隨機值法進行處理,又對小矩陣大小分別設置爲3×3、4×4、5×5。最終得到小矩陣大小爲 4×4 時的均值法得到的馬賽克效果 最好,最能夠符合題目要求。

  • 對於問題二,根據計算機對於灰度處理的基本步驟,主要工作爲將像素點的 R、G、B值置爲一相等值,對於原圖,分別使用加權平均法、平均值法、最大值 法求出了對應灰度值,最終確定加權平均法所得灰度圖效果最爲適宜。

  • 對於問題三,爲簡化提取輪廓線過程,首先將 RGB 圖像轉化爲灰度圖。然後 使用 sobel 算子以及 prewitt算子對圖像進行卷積,得到的梯度值矩陣經過歸一 化處理以及灰度化處理,得到基本輪廓圖。爲使圖片輪廓效果更好,通過灰度轉置以及直方圖均衡化操作,得到最終效果圖。

  • 對於問題四,要放大圖片,即要對各像素點的 RGB 值進行分層插值處理,對
    圖片分別採取雙線插值法和最鄰近插值法進行放大操作,對比得到雙線插值法放 大的圖像更加清晰。

  • 對於問題五,通過對於裝飾圖的二值化處理,得到裝飾圖的前景與後景的分 離效果。對於圖像的合成,採用了像素點 RGB
    值替換的做法,將裝飾圖中呈現爲 黑色的部分定位座標,再將原彩色圖的對應像素替換人物圖片中的指定像素點。
    而在定位替換點的時候,通過手動測量和識別人臉自動定位兩種方法進行定位, 得出兩個符合題意的合成圖片。

關鍵詞:圖像矩陣 算子 均值 權值 二值化 灰度化 定位 插值

2 具體過程

(1)問題一:馬賽克的處理

  • 首先,我們需要知道一般圖像處理中,對圖像進行讀取以及後續處理的原理,這也是整個建模過程的基礎:
    對於圖像來說,圖像是成千上萬個像素點構成,每一個像素點,具有三個維度的信息,我們稱之爲RGB色彩值,RGB的意思就是三原色,紅色red,綠色green,藍色blue,這三原色可以構成我們平常所看到的顏色。它們的取值是(0,255)
    因此,我們可以通過matlab的指令 imread 命令,將一個圖片,轉換成一個三維矩陣。
  • 現在我們可以瞭解馬賽克的原理:馬賽克的原理有許多種,本文參考的是文獻【1】提供的均值處理方法,簡單來說,就是將需要處理的圖像區域分成若干個小像素塊,假設任意的一個小像素區域爲A,然後對於A來說,我們對這個區域的像素RGB色彩值取均值,然後重新賦值此區域。便可以得到一個“中和”過的色彩值。(這部分RGB是分爲三層處理,也就是說red層處理一次,green一次,blue一次)
  • 在論文中,我們根據分塊的不同尺寸進行了操作,效果如圖:
    在這裏插入圖片描述
    可以看到,若是區域區的越大,那麼圖像就越模糊,因爲題目要求能夠模糊五官但是能夠觀察到人臉,我們認爲像素區域取4*4的時候效果是比較好的。
  • 爲了馬賽克效果的多樣性,我們添加了不同於對新的區域的賦值方法,分別是:取左上角的色彩值爲整體的方法和隨機取色彩值作爲新的整體色彩值,效果如下
    在這裏插入圖片描述
    效果稍微有些區別,可以看出其實有一些像我們平常使用p圖軟件的不同馬賽克筆。
第一題小結:事實上,馬賽克的原理非常的簡單,只需要打亂原先的像素區域即可,博主認爲對新的區域的賦值方法對馬賽克的效果影響不是很大,但選擇的尺寸會比較顯著的影響其效果。

(2)問題二:彩圖轉化爲灰度圖

  • 首先,在做題之前,我們應該需要搞清楚題目中的概念,灰度圖是什麼?
  • 我們可以認爲,灰度圖是彩圖在灰度值之間的一個映射,常用的轉換方法有以下幾種:假如原來某點的顏色爲RGB(R,G,B),那麼,我們可以通過下面幾種方法,將其轉換爲灰度:
    1.浮點算法:Gray=R0.3+G0.59+B0.11
    2.整數方法:Gray=(R
    30+G59+B11)/100
    3.移位方法:Gray =(R76+G151+B*28)>>8;
    4.平均值法:Gray=(R+G+B)/3;
    5.僅取綠色:Gray=G;

    通過上述任一種方法求得Gray後,將原來的RGB(R,G,B)中的R,G,B統一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來的RGB(R,G,B)就是灰度圖了
  • 我們可以觀察到,灰度圖的三維都是相同的
  • 在建立模型時,我們採用了三種方法,分別是浮點算法(權值平均法),均值法,以及最大值法(未在上述方法中列出),處理後,通過matlab的imshow命令,效果如下:
    在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

通過對比,可以看到通過權值平均法得到的效果比較好。


(3)問題三:輪廓提取

  • 題目要求是線描圖,其實轉成圖像處理的問題,就是對於整個圖片的輪廓提取。

  • 那麼如何實現輪廓提取?事實上,現在已經有非常成熟的解決方法。一般來說,輪廓提取問題可以粗略的描述爲找到圖像中那些沿特定方向局部強度變化顯著的位置(這裏如果不好理解的話,我們可以認爲一般在圖像中,一個物體與背景,或者人與背景,顏色是有很大的不同的),提取輪廓就是保留這些邊緣。在圖像中我們的首要任務就是區分出相同變化梯度和不同變化梯度的區域(相同或者相近的變化梯度的地方可以認爲是一個不需要分割區域)。

  • 由於 RGB 圖是一個三維圖像,在處理的時候會比較複雜,因此先通 過第二問的求解方法來將 RGB 的空間圖像轉換爲灰度圖像

  • 而對於圖像中的梯度,我們有很好的工具去描述,即圖像中某一橫切面所對 應的偏導數構成的向量,稱爲梯度向量
    f=(fx,fy) f=(fx)2+(fy)2\nabla f=(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y})\\ \ \\ ||\nabla f||=\sqrt{(\frac{\partial f}{\partial x})^{2}+(\frac{\partial f}{\partial y})^{2}}

  • 爲了求得每一點的梯度值,引入 sobel 算子,利用算子對圖像 進行卷積操作。(以下圖片部分來自本人的比賽論文)
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述在這裏插入圖片描述
    在這裏插入圖片描述

  • 圖片的輪廓提取是個非常複雜的問題,如果想要比較好的效果,需要比較繁複的處理,博主本人也只是參考了常用的輪廓提取的方法,用了最簡單的梯度向量的處理方法和後續的灰度均衡化的方法,主要的參考來源來自於文獻【2】【3】,如果大家對於圖像處理的細節有進一步的需求,可以再參考兩本文獻

輪廓提取小結:對於輪廓提取,我們的基本思路就是根據梯度的變化來獲取邊緣的位置,實現的方法是通過matlab中的邊緣獲取算法,基本原理是圖像處理中的輪廓提取算法。可以認爲基本步驟是(1)彩圖灰度化 (2)邊緣提取-梯度值映射爲灰度值 (3)灰度值轉換 (4)若灰度值集中,可做均衡化處理來增加效果

(4)問題四:圖片的放大

  • 對於圖像 n 倍放大,我們可以簡單的認爲圖像的放大即爲新建一個圖像, 擁有原圖像的 n 倍像素點數量,且每個像素點的 RGB 值都與原圖中的某一對應像 素點的 RGB 產生聯繫(或者說:新圖像的每一點,都是來自於原來的圖像)。由此可以想到利用插值來得到放大圖像中某一像素點所對 應的 RGB 值
  • 在具體的處理中,我們使用了雙線插值法以及最鄰近插值法
  • 事實上,最鄰近插值法的效果經實驗並不好,因爲會造成嚴重的圖像失真。在論文中,主要用於對比。
  • 圖片的縮放最核心的問題就是:放大/縮小後的圖片的像素點是通過何種方法來自於原來的圖片中的像素點。
    在這裏插入圖片描述在這裏插入圖片描述
    在這裏插入圖片描述

(5)問題五:圖片的分離與合成,圖像定位(人臉識別)

  • 在這一個問題中,實際上是分成兩個部分的,第一個部分是需要將裝飾物從本身的圖片中分離出來,因爲裝飾物在一個白色背景圖中,我們在合成的時候,只是需要裝飾物本身,而不需要白色背景,因爲我們的思路是,先將裝飾物的彩圖轉化爲二值圖。然後通過二值圖的0,1分佈,裝飾物所在的區域的位置,我們可以記錄下來。
  • 這個分離的問題我們可以理解爲爲自己戴上一副紅外裝置,整個世界都分成了兩種,一種是0,一種是1,爲0的像素點的位置,我們可以記錄下來,這一點的像素值,是我們所需要的裝飾物的像素值
  • 第二個問題,可以簡單的認爲是我們需要定位在圖中的人臉的位置,定位後,將裝飾物放置於頭頂(放置問題就是圖片的合成,可以使用裝飾物的像素替換頭頂上方區域的像素)
a.圖片的分離與合成

在這裏插入圖片描述

b.定位(人臉識別)
  • 主要參考的依據是YCbCr 膚色模型,可以通過膚色的亮度與周圍環境的亮度來簡單區分膚色與背景。
    在這裏插入圖片描述
  • 但是,這樣還是有問題,對於亮度和人臉的膚色差不多,以及手的區域,還是不能夠很好的與人臉區分開來。因此我們需要加入一些別的標準來判斷一個區域是否是人臉:一個白色區域到底是不是人臉,我們可以通過加入長高比(人臉是不可能達到一個非常極端的比值,以及在圖片中的像素區域的大小等判別標準)
    在這裏插入圖片描述
    在這裏插入圖片描述
    接下來用像素替換即可
    在這裏插入圖片描述

第五問小結:主要把一個大的問題分成兩個部分,一是如何將裝飾物從帶有背景的的圖片中分離出來,或者說定位出來(本文用的是標識定位裝飾物,然後在需要添加的地方進行像素的替換)。二是如何定位人臉的區域。解決了這兩個問題,也就解決了題給的問題。

參考文獻

[1] 馬賽克原理,HTTPS://WWW.ZHIHU.COM/QUESTION/31985844,2018,5,11
[2] 顧梅花,蘇彬彬,王苗苗,王志磊, 彩色圖像灰度化算法綜述 , 《計算機 應用研究》, 第 36 卷第 5 期,2018 [4] 岡薩雷斯·C·拉斐爾, 伍茲·E·理查德,數字圖像處理 [M],阮秋琦, 阮 宇智, 等譯. 3 版. 北京: 電子工業出版社, 2011: 151-152
[3] [德] 伯格,[德] 伯奇 著,黃華 等 譯,數字圖像處理:JAVA 語言算法描 述,清華大學出版社,2011,99-103
[4] 徐 燁 超 , 雙 線 性 插 值 (BILINEAR INTERPOLATION) 原 理 及 使 用 , HTTPS://BLOG.CSDN.NET/HUANG1024RUI/ARTICLE/DETAILS/46545329,2018.5.12
[5] 賀興華,周媛媛,王繼陽,周暉等 MATLAB7.X 圖像處理 人民郵電出版社 46-48
[6] BLUE_LG , 簡 單 的 基 於 YCRCB 顏 色 空 間 的 人 臉 檢 測 ( 膚 色 ), HTTPS://WWW.CNBLOGS.COM/BLUE-LG/ARCHIVE/2011/12/07/2279879.HTML

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章