當前位置:
首頁 > 最新 > 偽 「Photoshop」的圖像處理

偽 「Photoshop」的圖像處理

偽 「Photoshop」的圖像處理

載入ing

(一)引語

如題所示,偽「PS」不是要我們真的去做一個軟體,而是根據我們的需要處理圖片,比如說像如下這樣:

我們只需要實現一個能夠對一張圖片做處特效處理的程序即可。

(二)我們需要做什麼

無論是高級的效果,還是普通的效果(模糊,銳化,邊緣檢測),其核心部分都是對圖像數據的像素處理。其步驟如下:

01

解析圖片文件

02

對得到的數據進行處理

03

生成處理後的圖片文件

首先,

要解析圖片文件,

就應該了解圖片文件的格式。

我們學了計算機導論,

都知道圖片文件是由相機經過「採樣量化」等信號離散化處理後所得的數字信號。

在未壓縮時

(如raw格式或無壓縮的bmp點陣圖格式)

裡面主要儲存著像素。

(三)關於像素與圖像

簡單說,

計算機中顯示的圖片,

是由一個個被稱為像素的方格子組成的,

所有的像素組合起來就能夠呈現出一幅圖片。

因此放大圖片容易造成失真。

對非矢量圖的處理,

其實是對像素的處理,

一般而言,

每種類型的圖片,其像素儲存的信息也不同

01

對於黑白圖片,其每個像素只儲存0或1,0為黑色,1為白色。

02

對於灰度圖片,則根據更複雜的不同灰色深度來調整圖像

03

真彩圖片由紅綠藍(RGB)三個基本色相互協調組成

(四)關於圖片格式

這裡AgTao同學使用Ultraedit讀取二進位文件,據說WinHex或許功能更多,這裡就不細談了。

AgTao同學用它打開了一張示例圖片,看到的二進位數據如下:

Emmm,更複雜了……

不過我們不是全部都要了解,

這裡我們只需要是在土黃色游標往左四個位元組的數字來作為地址。

在我們的文件裡面,

最後四個是:十六進位數【36 00 00 00】,

然而這個數應該理解為【00000036】。(詳情見原文)

00000036(16進位)換成十進位是54,

也就是從頭開始,

經過54個位元組之後就是我們的實際像素數據:

從被選中的02開始

這裡插入說明一下AgTao同學所用的圖片格式,AgTao同學用的是bmp 24位真彩格式。

//24bpp-RGB:24bpp的點陣圖又稱為真彩點陣圖,它通常只有這一種編碼格式,在24bits中,低8位表示Blue分量;中8為表示Green分量;高8位表示Red分量。

也就是,

每三個位元組代表一個像素,

第一個是B通道

第二個是G通道

第三個是R通道

也就是說我們的圖片中

第一行第一列的像素(1,1)是

B-0x02-2

G-0x02-2

R-0x02-2

用PS查看一下是什麼顏色:

好吧是黑色

再找其他的

B-0XF9-249

G-0xFF-255

R-0x75-117

青色!

根據這個原理,

圖片只要改動像素,

圖片就能變成任意模樣

沒錯,只能修改像素並沒有什麼用,

但是這卻是理解接下來「自製PS」的基礎知識

(五)關於圖片修改

圖片修改的操作當然不是直接修改二進位碼啦!

這樣太複雜了。

我們需要別的方法實現修圖。

01

編程修圖:這時C/C++就派上用場了(詳情見原文)。

02

使用Matlab(適合編程經驗不足的初學者)

我們就第二種方法進行討論:

兩層循環生成一個漸變的圖片:

圖像顯示出來了

這個是你自己「製作」的第一張圖片!

修改一些參數,

可以有其他更好看的效果,

里只是一個示範,

回到正題,

我們要修改圖片,

當然要先載入圖片;

先定位到圖片所在目錄,再使用imread(filename)函數讀取並解析圖片數據,放到一個變數I裡面:

//imread是計算機語言中的一個函數,用於讀取圖片文件中的數據。在matlab的命令窗口中輸入doc imread或者help imread即可獲得該函數的幫助信息。

比如說,我要它變模糊,應該怎麼處理呢?

這裡需要用到一個數字信號處理的基本運算——卷積運算。這裡就不再展開了,

有興趣的同學可以查閱資料,

這裡不理解不阻礙使用。

例如:

(1)

先使用

-1 -1 0

-1 0 1

0 1 1

作為卷積核

得到圖像如下

(2)

使用

1 1 1

1 7 1

1 1 1

強調邊緣卷積核

(3)

使用邊緣檢測【好像是圖像識別的一個前置步驟】

(這個演算法和卷積核比較複雜,就不詳細給出了)

(4)

高反差(這個要配合一些其他的演算法)

基本上就是這樣,

以上的原理和過程

採用C/C++、JAVA之類的語言進行工程開發,

自己設計一下界面之類的,「自製PS」就完成啦!

(六)結束

希望在這方面有興趣的同學能夠在閱讀本文後對DIP入門有所幫助

(AgTao同學最近也才剛入門,可以一起交流交流),

沒有理解的同學也不用著急,

AgTao同學近期會把學習DIP的日記放在博客中,

歡迎前來交流。

以上,

便是AgTao同學的論述。

不知道大家是否受益匪淺呢?

如果大家還覺得不夠過癮,

可以搜索下面連接進入AgTao同學簡書原文閱讀。

也歡迎大家在他的簡書中交流。

http://t.cn/RnpLkSx

撰寫:軟協技術部 AgTao

編輯:軟協信宣部 xin

排版:軟協信宣部 小pang

校對:軟協信宣部 小七 & 瓶子


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 華南師大軟協 的精彩文章:

TAG:華南師大軟協 |