一、負片效果
在24全彩影像中,由三原色(RGB)組成,各8 bits,因此每個顏色都有2^8 = 256種可能(0~255),當對每個像素pixel P = 255 - P 時, 就會成為我們的負片效果了
下面來個範例圖,這題老師希望我們將圖片中間做成負片效果
中間部分的負片效果 |
程式如下:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!讀入圖片"001.jpg",若圖片和程式碼檔案位置相同時,則不需要填寫路徑 | |
!Matlab會自動將所有pixel存成一個三維陣列A1 | |
A1=imread('001.jpg'); | |
!New_A會是一個三維陣列,其中每個質,都會是255-A1相對應的質 | |
!New_A就是一個做完負片效果的圖了 | |
New_A = 255-A1; | |
!取得A1的大小,m = 長, n = 寬 ,p = 3(分別代表RGB) | |
[m,n,p] = size(A1); | |
!將B先複製成A1 | |
!將B圖中間部分替換成New_A做成負片效果 | |
B = A1; | |
B(round(m/4):round(m/4*3),round(n/4):round(n/4*3),:)=New_A(round(m/4):round(m/4*3),round(n/4):round(n/4*3),:); | |
!輸出B | |
imshow(uint8(B)); |
二、分別取出RGB
程式碼:
程式碼:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!讀入圖片"001.jpg",若圖片和程式碼檔案位置相同時,則不需要填寫路徑 | |
!Matlab會自動將所有pixel存成一個三維陣列A1 | |
A1=imread('001.jpg'); | |
!New_A會是一個三維陣列,其中每個質,都會是255-A1相對應的質 | |
!New_A就是一個做完負片效果的圖了 | |
New_A = 255-A1; | |
!取得A1的大小,m = 長, n = 寬 ,p = 3(分別代表RGB) | |
[m,n,p] = size(A1); | |
!將A1的R和G的pixel都設為一,則取出藍色部分,其他顏色作法依此類推 | |
A1(:,:,1:2) = 0; | |
!取紅色 則改成A1(:,:,2:3) = 0; | |
!取綠色 改成A1(:,:,1) = 0; A1(:,:,3) = 0; | |
!輸出A1 | |
imshow(uint8(A1)); |
[結論]
一開始學習多媒體影像處理的時候,是從C++入手的,今天換成Matlab時,突然覺得好簡單,code完全不會超過10行,想當初光是讀檔,就快死翹翹了,但想不到Matlab連讀檔都變得這麼簡單,但或許這只是一個開端而已,想當初C++一開始學的時候也只有cin cout...
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。