1. 程式人生 > >數字影象處理(MATLAB)(第二版) 岡薩雷斯 學習筆記

數字影象處理(MATLAB)(第二版) 岡薩雷斯 學習筆記

數字影象處理(MATLAB)(第二版) 岡薩雷斯
主要用來記錄自己的學習過程,相關實驗內容,便於日後查詢相關知識點及複習所用
第二章 灰度變換和空間濾波
本章重點討論兩類空間域處理方法:亮度(或灰度)變換與空間濾波。空間濾波有時又稱為鄰域處理或空間卷積
2.1 背景
空間域技術直接對影象畫素進行操作。 本章空間域處理表達式:g(x,y)=T[f(x,y)]
f(x,y)為輸入影象,g(x,y)為輸出影象 T是在點(x,y)的指定鄰域上定義的對影象f進行處理的運算元。 此外,T還可以對一組影象進行處理,如為了降低噪聲而疊加K幅影象。

2.2灰度變換函式
由於輸出值僅取決於某一點的灰度值,而不取決於該點的鄰域,因此灰度變換函式通常寫成如下形式:s=T(r)
式中,r表示影象f中相應點(x,y)的灰度,s表示影象g中相應點(x,y)的灰度。

2.2.1 函式imadjust 和stretchlim
函式imadjust是一個基本的影象處理工具箱函式,用於對灰度級影象進行灰度變換,其語法格式為:
g=imadjust(f,[low_in high_in],[low_out high_out],gamma)

對於函式imadjust,除了f和gamma,其所有輸入值都被限定在0和1之間,而與f的類別無關。
函式mat2gray可用於將一幅影象轉換為double類,並將其灰度標定到範圍[0,1],這與輸入影象的類別無關。
函式imadjust中各種可用的對映
例2.1 使用函式imadjust
f=imread(‘Fig0203(a).tif’);
imshow(f)
圖a原始數字乳房圖


上圖(a)是一幅數字乳房影象f,圖中顯示了一處病灶。
g1=imadjust(f,[0 1],[1 0]);
imshow(g1)
負片影象b
上圖是使用g1命令得到的明暗反轉影象(負片影象),這種過程對於增強嵌入在一大片黑色區域中的白色或灰色細節非常有用。例如在圖b中就很容易分析乳房的組織。
圖片的負片同樣可以利用工具箱函式imcomplement得到:
g=imcomplement(f);
imshow(g)

命令:g2=imadjust(f,[0.5 0.75],[0 1]);
將0.5到0.75之間的灰度擴充套件到整個[0.1]範圍,這種型別的處理對於強調感興趣灰度區非常有用。
圖c灰度擴充套件至[0.5,0.75]後的結果
命令:g3=imadjust(f,[ ],[ ],2);
通過壓縮灰度級的低端並擴充套件高階[見圖d],得到類似於圖c的結果(增加了更多的灰色調)。
圖d使用gamma=2增強影象後的結果

有時能夠自動地使用函式imadjust而不必關心上面討論的低引數或高參數是非常有用的,可使用函式stretchlim,基本語法為
low_High=stretcchlim(f)

g=imadjust(f,stretchlim(f),[ ]);
imshow(g)
圖片e

g=imadjust(f,stretchlim(f),[1 0]);
imshow(g)
圖片f
觀察圖片對比度的提升。

2.2.2對數及對比度拉伸變換
對數和對比度拉伸變換是動態範圍操作的基本工具,對數通過以下表達式實現:
g=c*log(1+f)
其中,c為常數,f是浮點數。伽馬曲線的形狀是可變的,對數函式的形狀是固定的,對數變換的一項主要應用是壓縮動態範圍

執行對數變換時,我們希望使得壓縮值出現在顯示的完整範圍內,對8位元來說,最簡方法是使用語句:
gs=im2uint8(mat2gray(g));
通過使用函式mat2gray會將值限定在[0,1]範圍內,使用函式im2uint8會將值限定在[0,255]範圍內,把該影象轉化成uint8類。

圖2.4
s=T(r)=11+(mr)E
式中r表示輸入影象的灰度,s是輸出影象中的相應灰度值,E用於控制該函式的斜率。該函式對浮點影象的實現方式如下:
g=1./(1+(m./f).^E)
g的限定值為1,因此在使用這種型別的變換時,輸出值不能超過範圍[0,1].圖2.4a是E=20得到的。

例2.2 利用對數變換減小動態範圍
圖2.5a是一個取值在0至10^6間的傅立葉頻譜,它顯示線上性標度的8位顯示系統上。
圖2.5b顯示了使用如下命令後的結果:
g=im2uint8(mat2gray(log(1+double(f))));
imshow(g)
圖2.5a傅立葉頻譜
圖2.5b使用對數變換後的結果

2.2.3指定任意灰度變換
實現灰度對映的一種簡單方法是使用函式interp1,該函式的語法形式如下:
g=interp1(z,T,f)
式中,f是輸入影象,g是輸出影象,T為列向量,z是長度與T相同的列向量,形成方式如下:
z=linspace(0,1,numel(T))’;
注:函式linspace(a,b,n)會生成一個行向量,該行向量的n個元素是在a和b之間(包括a和b)線性間隔的。

2.2.4 用於灰度變換的一些實用M函式
例2.3 函式intrans的說明
要說明函式intrans,圖2.6a是一幅利用對比度拉伸方法來增強骨骼結構的理想候選影象,圖2.6b是利用如下對函式intrans的呼叫得到的:
g=intrans(f,’stretch’,mean2(tofloat(f)),0.9);
figure,imshow(g)
注意:函式mean2是如何直接在函式呼叫內部計算f的平均值的。產生的值為m所用,為了將其值標度到範圍[0,1],使用tofloat把函式影象f轉換為了浮點類影象,從而使平均值m也在此範圍內。E的值也就相應地被確定了。
圖2.6a

快捷鍵

  • 加粗 Ctrl + B
  • 斜體 Ctrl + I
  • 引用 Ctrl + Q
  • 插入連結 Ctrl + L
  • 插入程式碼 Ctrl + K
  • 插入圖片 Ctrl + G
  • 提升標題 Ctrl + H
  • 有序列表 Ctrl + O
  • 無序列表 Ctrl + U
  • 橫線 Ctrl + R
  • 撤銷 Ctrl + Z
  • 重做 Ctrl + Y

本編輯器支援 Markdown Extra ,  擴充套件了很多好用的功能。具體請參考Github.

表格

——– | —
Computer | 1600Phone|12
Pipe | $1

可以使用冒號來定義對齊方式:

專案 價格 數量
Computer 1600 元 5
Phone 12 元 12
Pipe 1 元 234

定義列表

Markdown Extra 定義列表語法:
專案1
專案2
定義 A
定義 B
專案3
定義 C

定義 D

定義D內容

程式碼塊

程式碼塊語法遵循標準markdown程式碼,例如:

@requires_authorization
def somefunc(param1='', param2=0):
    '''A docstring'''
    if param1 > param2: # interesting
        print 'Greater'
    return (param2 - param1 + 1) or None
class SomeClass:
    pass
>>> message = '''interpreter
... prompt'''

腳註

生成一個腳註1.

目錄

[TOC]來生成目錄:

數學公式

  • 行內公式,數學公式為:Γ(n)=(n1)!nN
  • 塊級公式:
x=b±b24ac2a

更多LaTex語法請參考 這兒.

UML 圖:

可以渲染序列圖:

Created with Raphaël 2.1.2張三張三李四李四嘿,小四兒, 寫部落格了沒?李四愣了一下,說:忙得吐血,哪有時間寫。

或者流程圖:

Created with Raphaël 2.1.2開始我的操作確認?結束yesno
  • 關於 序列圖 語法,參考 這兒,
  • 關於 流程圖 語法,參考 這兒.

離線寫部落格

即使使用者在沒有網路的情況下,也可以通過本編輯器離線寫部落格(直接在曾經使用過的瀏覽器中輸入write.blog.csdn.net/mdeditor即可。Markdown編輯器使用瀏覽器離線儲存將內容儲存在本地。

使用者寫部落格的過程中,內容實時儲存在瀏覽器快取中,在使用者關閉瀏覽器或者其它異常情況下,內容不會丟失。使用者再次開啟瀏覽器時,會顯示上次使用者正在編輯的沒有發表的內容。

部落格發表後,本地快取將被刪除。 

使用者可以選擇 把正在寫的部落格儲存到伺服器草稿箱,即使換瀏覽器或者清除快取,內容也不會丟失。

注意:雖然瀏覽器儲存大部分時候都比較可靠,但為了您的資料安全,在聯網後,請務必及時發表或者儲存到伺服器草稿箱

瀏覽器相容

  1. 目前,本編輯器對Chrome瀏覽器支援最為完整。建議大家使用較新版本的Chrome。
  2. IE9以下不支援
  3. IE9,10,11存在以下問題
    1. 不支援離線功能
    2. IE9不支援檔案匯入匯出
    3. IE10不支援拖拽檔案匯入
  1. 這裡是 腳註內容.