1 / 20

數位影像處理 第十三章 色彩處理

數位影像處理 第十三章 色彩處理. 13.1 何謂色彩 13.2 色彩模型 13.3 MATLAB 的色彩影像 13.4 虛擬上色 13.5 彩色影像處理. 13.1 何謂色彩. 人類的視覺系統一般來說,會將色彩分為不同份量的紅、綠、藍混合起來的結果,因此紅、綠、藍稱為三原色,將任二原色混合後得到的是第二次色 : 紫紅 ( 紫 )= 紅 + 藍 青綠 = 綠 + 藍 黃 = 紅 + 綠. RGB 對色函數. 13.1 何謂色彩.

owen
Download Presentation

數位影像處理 第十三章 色彩處理

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 數位影像處理第十三章 色彩處理 13.1 何謂色彩 13.2 色彩模型 13.3 MATLAB的色彩影像 13.4 虛擬上色 13.5 彩色影像處理

  2. 13.1 何謂色彩 • 人類的視覺系統一般來說,會將色彩分為不同份量的紅、綠、藍混合起來的結果,因此紅、綠、藍稱為三原色,將任二原色混合後得到的是第二次色: 紫紅(紫)=紅+藍 青綠=綠+藍 黃=紅+綠 RGB對色函數

  3. 13.1 何謂色彩 • 某些波長中的紅、綠、藍色值為負數,實際上不可能會有這樣的結果,不過可以看成色源再加上其他原色光束,以維持對色。為了除去色彩中的負數值,CIE採用XYZ色彩模型,XYX可以透過線性轉換與從對應的RGB數值得到。 XYZ對色函數

  4. 13.1 何謂色彩 • 一般來說,組成特定顏色的XYZ值稱為三色激值,若不考慮亮度,三色激值可以除以X+Y+Z加以正規劃: x = X / X+Y+Z y = Y / X+Y+Z z = Z / X+Y+Z 可發現x+y+z=1,因此顏色可以只用x與y表示,稱為色度座標。

  5. 13.1 何謂色彩 • 知道xy與Y值後,便可以透過反推上述方程式求得三色激值的XZ : X= ( x / y ) r Z= (1 – x – y / y ) r • 色度圖: wxyz=load('ciexyz31.txt'); xyz=wxyz(:,2:4)'; xy=xyz'./(sum(xyz)'*[1 1 1]); x=xy(:,1)'; y=xy(:,2)'; figure,plot([x x(1)],[y y(1)]),xlabel('x'),ylabel('y'),axis square 色度圖

  6. 13.2 色彩模型 • 色彩模型是以某種標準的方式分辨顏色的方法, 基本上是由三維座標與一個子空間所組成,在這子空間中,一個點便代表一個色彩。 • 要定義出色域,首先產生一個100X100X3的陣列,陣列中的每個點都對應一個XYZ數值(i/100 , j/100 , 1-i/100-j/100) ,然後計算對應RGB值,若為負數,輸出為白色:

  7. 13.2 色彩模型 • function res=gamut() • global cg; • x2r=[3.063 -1.393 -0.476;-0.969 1.876 0.042;0.068 -0.229 1.069]; • cg=zeros(100,100,3); • for i=1:100, • for j=1:100, • cg(i,j,:)=x2r*[j/100 i/100 1-i/100-j/100]'; • if min(cg(i,j,:))<0, • cg(i,j,:)=[1 1 1]; • end; • end; • end; • res=cg; • 然後使用下列指令顯示位於色度圖中的色域: • >> imshow(cG),line([x' x(1)],[y' y(1)]),axis square,axis xy,axis on RGB色域

  8. 13.2 色彩模型 • 色調(Hue) ,飽和度(Saturation) ,明暗度(Value) ,縮寫為HSA 。 • 色調(Hue):[全彩]的屬性(紅、綠、藍、橘等) 。 • 飽和度(Saturation):色彩被白色稀釋的程度。色彩中含有白色越多,飽和度變越低,因此深紅色飽和度高,亮紅色飽和度低。 • 明暗度(Value):亮的顏色明暗度高,岸的顏色明暗度低。

  9. 13.3 MATLAB的色彩影像 • 由於彩色影像的每個像素資訊都必須獨立分為三項,因此在MATLAB中,全彩影像可用三維陣列來表示,假設獨取一RGB影像: • >> x=imread('lily.tif'); • >> size(x) • ans = • 186 230 3 • >> figure,imshow(x(:,:,1)) • >> figure,imshow(x(:,:,2)) • >> figure,imshow(x(:,:,3)) 紅色部分 綠色部分 藍色部分

  10. 13.3 MATLAB的色彩影像 • 轉換成YIQ或HSV ,再次檢視組成部分: • >> xh=rgb2hsv(x); • >> imshow(xh(:,:,1)) • >> figure,imshow(xh(:,:,2)) • >> figure,imshow(xh(:,:,3)) 色調 明暗度 飽和度

  11. 13.3 MATLAB的色彩影像 • YIQ色彩空間: • >> xn=rgb2ntsc(x); • >> imshow(xn(:,:,1)) • >> figure,imshow(xn(:,:,2)) • >> figure,imshow(xn(:,:,3)) Y I Q

  12. 13.4 虛擬上色 • 虛擬上色指的是對灰階影像上指定顏色,以便在視覺上凸顯影像的某些面向。 • 明暗度切割:這個方法是將影像切割成幾個灰些範圍,每個範圍只定不同顏色:

  13. 13.4 虛擬上色 • 在MATLAB中,要使用另外顏色來檢視影像,可以使用imshow ,並設定參數colormap 。 >> b=imread('blocks.tif'); >> imshow(b,colormap(jet(256))) 然而,色譜若選擇錯誤可能會破壞整個影像,例如將vga色譜代入就很不恰當,因為這個色譜只有16列,所以必須將影像灰階數目減至16 ,可以使用函數grayslice:

  14. 13.4 虛擬上色 • >> b16=grayslice(b,16); • >> figure,imshow(b16,colormap(vga)) • 我們也可以自行產生色譜必須產生三個 行的矩陣,每一列都是介於0.0與1.0之間的RGB值構成,使用下列指令產生色譜: • >> mycolormap=[0 0 1;1 0 1;0 1 0;1 0 0]; • >> b4=grayslice(b,4); • >> imshow(b4,mycolormap)

  15. 13.5 彩色影像處理 • 分別處理每個RGB矩陣。 • 轉換色彩空間,將明暗度自色彩資訊抽離,單獨處理明暗度部分。 • 加強比對:透過明暗度部份處裡,可以獲得對比加強效果。

  16. 13.5 彩色影像處理 • 轉全彩(RGB)影像: >> [x,map]=imread('emu.tif'); >> c=ind2rgb(x,map); RGB轉YIQ以便取明暗度部分: >> cn=rgb2ntsc(c); 將明暗度部分帶入直方圖均化,然後轉回RGB方便顯示: >> cn(:,:,1)=histeq(cn(:,:,1)); >> c2=ntsc2rgb(cn); >> imshow(c2) 將RGB各個部份帶入直方圖均化: >> cr=histeq(c(:,:,1)); >> cg=histeq(c(:,:,2)); >> cb=histeq(c(:,:,3)); 全部放入單一三維陣列顯示: >> c3=cat(3,cr,cg,cb); >> imshow(c3) RGB 轉直方圖均化RGB 單一三維陣列

  17. 13.5 彩色影像處理 • 空間濾波: 低通 >> a15=fspecial('average',15); >> cr=filter2(a15,c(:,:,1)); >> cg=filter2(a15,c(:,:,2)); >> cb=filter2(a15,c(:,:,3)); >> blur=cat(3,cr,cg,cb); >> imshow(blur) 高通 >>cn=rab2ntsc(c); >>a=fspecial(‘unsharp’); >>cn(:,:,1)=filter2(a,cn(:,:,1)); >>cu=ntsc2rgb(cn); >> imshow(cu) 低通 高通

  18. 13.5 彩色影像處理 • 去除雜訊: 使用色彩影像處理 tw=imread('twins.tif'); 加入雜訊 tn=imnoise(tw,'salt & pepper'); figure,imshow(tn(:,:,1)) figure,imshow(tn(:,:,2)) figure,imshow(tn(:,:,3)) 將各RGB部分帶入中位數濾波器 trm=medfilt2(tn(:,:,1)); tgm=medfilt2(tn(:,:,2)); tbm=medfilt2(tn(:,:,3)); tm=cat(3,trm,tgm,tbm); imshow(tm) 雜訊紅色部分 雜訊綠色部分 雜訊藍色部分

  19. 13.5 彩色影像處理 只除去y部分雜訊 tnn=rgb2ntsc(tn); tnn(:,:,1)=medfilt2(tnn(:,:,1)); tm2=ntsc2rgb(tnn); imshow(tm2) 去除RGB各部份雜訊 除去y部分雜訊

  20. 13.5 彩色影像處理 • 邊緣檢測: 使用函數rgb2gray f=imread('flowers.tif'); fg=rgb2gray(f); fe1=edge(fg); imshow(fe1) 使用邏輯運算子or合併結果 f1=edge(f(:,:,1)); f2=edge(f(:,:,2)); f3=edge(f(:,:,3)); fe2=f1 |f2| f3; figure,imshow(fe2) fe1 fe2

More Related