前言:爲什麼圖像處理學習最常用的圖片是Lena?
參考[1] 。Lena Söderberg 是瑞典模特,最初出現在《花花公子》1972年11月期的雜誌中,原圖是一張裸體圖片(這並不是重點!!!)。其實還有一些原因[2]:
首先,Lenna圖像包含了各種細節、平滑區域、陰影和紋理,這些對測試各種圖像處理算法很有用。它是一副很好的測試圖像!第二,圖像處理工作的人都是些什麼樣的傢伙大家都知道,看看Github被稱爲“全球最大的同性交友網站”就知道開發人員佔比了。
2、MATLAB2018a安裝
2.1 MATLAB環境配置
MATLAB作爲一種強大的數學計算軟件,應用的領域也隨着Tools的增加而逐步擴大,甚至有些工具包還會獨立出來做成軟件。而MATLAB的軟件也日漸膨脹。目前最新版的MATLAB2019a已經支持深度學習相關的算法了,甚至在APP裏面還有視頻圖像自動標籤的功能。
但是MATLAB的安裝還是傳統的套路,沒什麼坑。這裏附上安裝教程:
https://www.cnblogs.com/shenxiaolin/p/9129618.html
https://jingyan.baidu.com/article/0a52e3f4e3a8a7bf62ed72f0.html
注意自己電腦系統的位數和MATLAB的相匹配,即64位的系統,安裝64位的MATLAB。
2.2 MATLAB 讀顯圖片
上一章我們講到,MATLAB中,圖像的存儲方式是以矩陣存儲的,實際上,對圖像的操作就是矩陣運算過程。MATLAB的繪製圖片,都是描點的方式(描點繪圖在中學就學過)。
這裏一定要注意的是,你的工作空間,也就是左側那個當前文件夾裏面一定要有你要處理的圖片,或者說一定要切換到工作目錄下面。
clear % 清除工作空間變量,防止變量互相干擾
clc % 清空命令行
I = imread('lena.jpg'); % 讀取當前目錄下的lena.jpg圖片,返回值爲矩陣I
imshow(I)
可以看到右側工作區的變量 I 爲512*512*3的矩陣,實際上存儲的是RGB三個通道的數據,每個通道分別爲512*512像素。如果我們想要查看各個通道的情況,可以直接imshow這些通道:
subplot(3,1,1); % 繪製圖片
imshow(I(:,:,1)) % 顯示紅色通道
title('紅色分佈情況');
subplot(3,1,2);
imshow(I(:,:,2)); % 綠色通道
title('綠色分佈情況');
subplot(3,1,3);
imshow(I(:,:,3)); % 藍色通道
title('藍色分佈情況');
所以,知道爲什麼選擇這副圖像了吧!!!
3、OpenCV+VS2013環境配置
3.1、OpenCV + VS2013 + Windows 10環境配置
VS2013的安裝:https://jingyan.baidu.com/article/ab0b56305e8883c15bfa7d7a.html
正常配置,安裝默認組件即可,無坑。但是要注意路徑問題,不要含有中文名稱,不要含有空格。
VS2013+OpenCV的配置:http://blog.chinaaet.com/crazybird/p/5100054053
這裏可能會有很多的坑,最常出現的就是我總結了以下幾點配置時會遇到的問題:
(1)OpenCV 版本:OpenCV的版本和VS2013版本是有匹配關係的,這個一定要注意,尤其是OpenCV下的 *\opencv\build\x64\ 目錄下面會有 vc10,vc11,vc12,vc14......
這些目錄的匹配關係如下表:
*\opencv\build\x64\ | 對應的Visual Stdio |
vc10 | VS2010 |
vc11 | VS2012 |
vc12 | VS2013 |
具體的版本對應,還要自己找。
(2)環境變量的設置:環境變量本身是一個文件夾所在的路徑,不同的博客上面會有不同的定義方式,但無非就是$符和絕對路徑的區別,仔細觀察就行。環境變量添加的時候看你要添加的是X86還是X64。如果你選擇了X64,就一直下去。
這裏一定要注意你到底配置的是X86機器還是X64機器,一定要注意這個問題!!!!!!!
(3)需要注意的事項:VS中需要配置的項目
這裏一定要注意你到底配置的是X86機器還是X64機器,一定要注意這個問題!!!!!!!
默認情況下是32位機器,即屬性 Win32,如果你需要修改編譯器,那麼一定要先修改成X64,這時候對應的屬性管理器也會不同。
假設我們設置的是X64機器。則
a. 屬性管理器雙擊的是 Debug | x64 下面的 Microsoft.Cpp.x64.user
b. 後面的配置均在這個下面。
3.2、OpenCV圖像讀顯
搞了一下午,終於弄完了。
另一個注意事項:工作目錄是項目名目錄!!!!
在VS生成項目時,會生成如下文件,第一個文件夾就是你的工作目錄,如果還記得MATLAB的那部分,大家就知道這個問題的重要性了。
以下爲圖像的讀取和顯示測試代碼
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
Mat img = imread("test.jpg"); // 載入一張圖片
imshow("test", img); // 在窗口中顯示載入的圖片
waitKey(); // 等待按鍵按下退出
return 0;
}
結果:
4、Python3 及圖像相關模塊配置
爲什麼要推薦大家用 Python3 ?
因爲Python官網說:2020年將不再維護 Python2 !!!!!!
python的環境配置就不說了,因爲比較簡單,並且基本不會遇到坑。
目前主流的Python環境是 Anaconda 、Pychram、Python IDLE、Jupyter.
4.1 PIL 庫和 matplotlib 介紹
PIL可以做很多和圖像處理相關的事情[3]:
- 圖像歸檔(Image Archives)。PIL非常適合於圖像歸檔以及圖像的批處理任務。你可以使用PIL創建縮略圖,轉換圖像格式,打印圖像等等。
- 圖像展示(Image Display)。PIL較新的版本支持包括Tk PhotoImage,BitmapImage還有Windows DIB等接口。PIL支持衆多的GUI框架接口,可以用於圖像展示。
- 圖像處理(Image Processing)。PIL包括了基礎的圖像處理函數,包括對點的處理,使用衆多的卷積核(convolution kernels)做過濾(filter),還有顏色空間的轉換。PIL庫同樣支持圖像的大小轉換,圖像旋轉,以及任意的仿射變換。PIL還有一些直方圖的方法,允許你展示圖像的一些統計特性。這個可以用來實現圖像的自動對比度增強,還有全局的統計分析等。
Matplotlib 則是受到MATLAB的啓發,並且完全仿照MATLAB的函數形式的繪圖接口。
當然,Python也可以使用Opencv的方式來處理圖像。
4.2、圖像的讀取與顯示
這裏我基於Ananconda下的Spyder來做圖像處理。
# -*- coding: utf-8 -*-
from PIL import Image # 導入PIL庫
im = Image.open('test.jpg'); # 讀取圖片
bands = im.getbands() # 顯示該圖像的所有通道
im.show() # 顯示圖像
顯示結果
這裏是需要一個圖片查看工具的。
參考
[1] https://cloud.tencent.com/developer/news/324419