【數字圖像處理之(三)】用圖像加強談灰度變換

前面已經說了,數字圖像處理是指經過計算機對數字圖像進行 去除噪聲加強復原切割提取特徵等處理的方法和技術。

其主要 目的 有三個方面:
  1. 提升圖像的視感質量。如進行圖像的亮度、彩色變換,加強、抑制某些成分,對圖像進行幾何變換等,以改善圖像的質量。
  2. 圖像數據的變換、編碼和壓縮,以便於圖像的存儲和傳輸

  3. 提取圖像中所包括的某些特徵或特殊信息,這些被提取的特徵或信息每每爲計算機分析圖像提供便利。提取特徵或信息的過程是模式識別或計算機視覺的預處理提取的特徵可以包括很是多方面,如頻域特徵、灰度或顏色特徵、邊界特徵、區域特徵、紋理特徵、形狀特徵、拓撲特徵和關係結構等。

圖像加強(加強圖像中的實用信息)

  1. 圖像加強是指對圖像的某些特徵,如邊緣輪廓對照度等進行強調或銳化,以便於顯示、觀察或進一步分析與處理
  2. 加強的首要目標是使處理後的圖像比原始圖像更適合於特定應用

  3. 主要方法:
    • 空間域: 
      • 點運算(灰度變換、直方圖修正法)
      • 區域運算(空間濾波)
    • 頻域:
      • 高通濾波、 低通濾波、中值濾波;

灰度變換(gray-scale transformation, GST)是一種空間域上的點運算處理方法。依據必定的關係,逐點改變原圖像中每一個像素灰度值的方法(且僅僅跟該點原來的灰度值有關),其表示形式例如如下:

  • 對於輸入圖象f(x,y),輸出圖像g(x,y),T(in)爲灰度變換函數。則g(x,y)=T( f(x,y) )。

其主要目的例如如下:
  • 改善畫質。使圖像顯示效果更加清晰
  • 有選擇性地突出圖像中感興趣的特徵或抑制某些不需要的特徵,使圖像與視覺響應特徵相匹配(圖像加強)

其主要應用例如如下:
  • 圖像求反
  • 對照度拉伸
  • 圖像灰度切割(二值化)

圖像求反:

這樣的方法適用於加強嵌入圖像暗色區域的白色或灰色細節。
src = imread('Fig0303(a)(breast).tif');
imshow(src);
result = imadjust(src, [0 1], [1 0]);
figure, imshow(result);


對照度拉伸:

(普通線性變換)
src = imread('Fig0316(a)(moon).tif');
imshow(src);
result = imadjust(src, stretchlim(src), [ ]);
figure, imshow(result);


(使用對數變換)
src = imread('Fig0305(a)(spectrum).tif');
imshow(src);
result = im2uint8( mat2gray( log(1 + double(src)) ) );
figure, imshow(result);


圖像灰度切割(二值化):

在圖像處理領域,二值圖像運算量小,並且能夠體現圖像的關鍵特徵,所以被普遍使用。
src = imread('Fig0409(a)(bld).tif');
imshow(src);
[row clumn] = size(src);
for p = 1:row
    for q = 1:clumn
        if src(p,q)>=125
            src(p,q)=255;
        else
            src(p,q)=0;
        end
    end
end
figure,imshow(src);



  • MATLAB函數小結:


imadjust()

imadjust在數字圖像處理中用於進行圖像的灰度變換(調節灰度圖像的亮度或彩色圖像的顏色矩陣),該函數先將圖像映射到[0 1],好比uint8類型的圖像會先乘以255來決定實際應用中的值。

調用格式:
J = imadjust(I)
將灰度圖像  I 中的亮度值映射到 J 中的新值並使 1% 的數據是在低高強度和飽和,這添加了輸出圖像 J 的對照度值。此使用方法至關 imadjust(I,stretchlim(I))

J = imadjust(I,[low_in; high_in],[low_out; high_out])
將圖像I中的亮度值映射到J中的新值。即將low_in至high_in之間的值映射到low_out至high_out之間的值。

low_in 下面與 high_in 以上的值被剪切掉了。也就是說,low_in 下面的值映射到 low_out,high_in 以上的值映射到high_out。它們都可以使用空的矩陣[],默認值是[0 1]python


J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)
將圖像 I 中的亮度值映射到 J 中的新值,當中 gamma指定描寫敘述值I和值J關係的曲線形狀。假設gamma小於1。此映射偏重更高數值(明亮)輸出,假設gamma大於1。此映射偏重更低數值(灰暗)輸出。假設省略此參數,默以爲(線性映射)。

newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)
調整索引色圖像的調色板map。

假設low_in, high_in, low_out, high_out 和 gamma 都是標量。那麼對 r,g。b 份量同一時候都作此映射。函數

對於每個顏色份量都有惟一的映射,當 low_in 和 high_in 同一時候爲1*3向量或者 low_out 和 high_out 同一時候爲1*3向量或者 gamma 爲1*3向量時。post

調整後的顏色矩陣 newmap 和 map 有一樣的大小。ui


RGB2 = imadjust(RGB1,...)
對 RGB 圖像  RGB1 的紅、綠、藍調色板分別進行調整。

隨着顏色矩陣的調整,每一個調色板都有惟一的映射值。編碼


stretchlim() 

 LOW_HIGH = stretchlim(src, tol)
該函數找到對照度擴展圖像的對照,可用於imadjust(),
tol =  [LOW_FRACT HIGH_FRACT] 指定圖像低像素值和高像素值飽和度的百分比
假設tol是一個標量,tol = LOW_FRACT、HIGH_FRACT = 1 - LOW_FRACT,飽和度等於低像素值和高像素值的百分比。

假設在參數中忽略toll。那麼飽和度水平爲2%,tol的默認值爲[0.01  0.99]。
假設選擇 tol = 0, LOW_HIGH = [min(I(:)); max(I(:))].

mat2gray()

調用格式:
I = mat2gray(A, [amin amax])
將圖像矩陣A中介於amin和amax的數據歸一化處理。 其他小於amin的元素都變爲0。 大於amax的元素都變爲1。I = (A-amin)/(amax-amin)

I = mat2gray(A)
將圖像矩陣A歸一化爲圖像矩陣I。 歸一化後矩陣中每個元素的值都在0到1範圍內(包含0和1)。

I = (A-amin)/(amax-amin)spa


im2uint8()

函數功能: 把圖像 數據類型轉換爲無符號八位整型。假設輸入圖像是無符號八位整型的,返回的圖像和
源圖像一樣。假設 源圖像不是無符號八位整型的,該函數將返回和源圖像一樣但 數據類型爲uint8的圖像
(必要時對圖像進行調整)。

調用格式:
I = im2uint8(src)
灰度圖像src數據類型轉換成無符號八位整型的後, 返回。(但src並不發生改變)

RGB2 = im2uint8(RGB1)
把真彩色圖像的 數據類型轉換成無符號八位 整型的。 並返回。

注意這裏並不是將真彩色圖像轉換成爲黑白圖像, 這裏只改變了圖像數據的類型。3d


I = im2uint8(BW)
把二值圖像BW的數據格式轉換成uint8格式的。 由於二值圖像的圖像數據只取0和1, 因此這裏的轉換效果不過把1映射成255。
相關文章
相關標籤/搜索