從學校畢業之後,就比較迷茫,不知道自己積累的東西需要用怎樣的方式留存下來,放在腦子裏容易忘,而且不拿出來系統處理一下,也沒辦法形成系統,所以,我覺得用“技術筆記”或者“讀書筆記”的方式記下來,是一個技術人應該做好的事情。
所以,我們開始吧。
RGB圖像是每個像素有24位大小,分爲三個通道,每個通道8位,2的8次方等於256,可以表示256個等級
索引,就是把色彩編個號,我記錄每個像素的色彩的時候,不用寫RGB各個分量大小是多少,只需要寫是幾號顏色
圖像就是一個矩陣,一般先說行數,再說列數
圖像的空間分辨率,像素每英寸
稀疏的意思就是,很多像素的值是相同的,並沒有那麼“豐富”“多樣”的像素在這個圖裏面
縮小一幅圖像會丟失細節,此時再放大這個圖像不能恢復更多細節
灰度級分辨率,也叫輻射計量分辨率,因爲是標記了每一個像素的亮度等級
進行圖像處理的基本步驟:處理(修改和增強),分析(檢測和測量),識別(性質和相互關係)
圖像處理的一些活動,主要包括:點運算,幾何變換,圖像增強,小波變換,圖像復原,彩色圖像處理,形態學圖像處理,圖像分割,目標的表示與描述,特徵提取,對象識別
預備知識:鄰接的概念,連通性的概念,區域和邊界的概念
幾種距離的度量:歐氏距離(就是平面上的兩個點對應座標之差的平方和開方),街區距離(就是兩個點對應座標之差的絕對值之和),棋盤距離(就是兩個點對應座標之差的絕對值,取大的那個)
圖像處理的點運算:就是對單個像素點進行操作
鄰域運算:對一個小範圍內的像素進行操作,比如灰度變換
線性操作:就是指這個操作是線性的,也就是F(ax+by)=aFx+bFy
==================
下面是關於MATLAB專門的知識
addpath,能夠添加一個路徑
genpath,能夠添加該目錄下所有的目錄作爲路徑
whos,能夠展示工作區當中的所有變量
rand是均勻分佈 randn是正態分佈隨機數
size能夠獲得所有維度
A(:)能夠輸出這個矩陣按列存儲的一維向量
*是矩陣乘法
.*是矩陣對應元素相乘,兩個矩陣尺寸應該相同
^是矩陣的冪
.^是矩陣對應元素的冪,就是操作符後面的矩陣每個元素都是前面矩陣或者標量每個對應元素的指數
{}是元胞,裏面能夠包含好幾種不同類型的變量
a.b是結構體,a裏面能夠放很多不同的b,用於訪問,顯示,引用
eig是求一個矩陣的特徵向量
編程技巧:多層嵌套的for非常笨拙,不如使用點乘來進行批量操作
meshgrid是能夠輸入一個向量,輸出一個矩陣,矩陣具有行遞增列相同或者列遞增行相同的性質,能夠用來當作座標使用
例如,(A,B)=meshgrid(a,b),其中a,b均爲1-100的序列,那麼AB分別是兩個100*100的矩陣
分配內存:MATLAB不用特地分配內存,只需要在使用某個變量之前聲明他是zeros()就可以了
=======================
圖像有很多種類:
①灰度圖像,雙精度的話就是0和1兩種取值,八位灰度值就是0-255
②RGB圖像,紅綠藍的順序,一副圖像的尺寸是(m*n*3),其中m是行,n是列,3當中,1是紅通道,23是綠和藍
③索引圖,一個像素的色值不再以紅綠藍爲通道進行存儲,而是一個序號,對應到一個N*3的表,其中雙精度的序號沒有偏移,8位存儲的序號偏移一個(從0開始)
④二值圖,只有0和1,是unit8型
⑤多幀圖像,尺寸是m*n*3*幀數,它們共同擁有同一個顏色索引表
====================================
一些MATLAB操作
cat【dim,a,b】,把兩個矩陣a和b按照在第dim個維度上聯接起來
imshow,只能顯示一幀圖像
rgb2gray,rgb轉灰度圖
im2double,unit8型轉double型,取值上,【0-255】歸一化到【0-1】
im2unit8,轉回unit8,即上邊的逆操作,取值也是
imread,讀取圖像,可以讀取索引表
imwrite,寫圖像,可以存儲索引表
iminfo,查看圖像信息,很豐富
imshow,【low,high】的缺省參數,這是灰度的上下限,拉伸顯示,直方圖均衡的效果
subplot,是畫小圖,(m,n,p),是畫m*n個小圖,現在處理第p個
impixelinfo,可以顯示鼠標所在位置的像素位置和像素值
imdistline,可以通過鼠標點擊,查看兩點之間的距離
==============================
幾種比較常用的灰度圖操作
①imhist,計算灰度直方圖,如果指定n,那就是n個灰度區間(而不是256個),沒有賦值語句就會直接繪製出來
如果用【counts,x】=imhist(圖),就會把灰度數量和灰度等級賦值給counts和x
然後再stem(x,counts)的話,也能畫圖,一樣的
歸一化直方圖,就是不顯示某個灰度的像素數量而是比例,counts除以mn之積就行了
②線性灰度變換,能夠增加圖像對比度,亮度,反相等等
具體操作就是F(Da)=FaDa+Fb=Db,把Da灰度值變成了Db灰度值
③非線性灰度變換,指數變換,就是t=c*log(1+s),把s變成了t,這個操作可以把比較暗的地方細節增大,因爲低像素值的區域被拉開了
④非線性灰度變換,gama變換,就是y=(esp+x)^r,當r>1,曲線是凹的,亮部細節放大,當r<1,曲線是凸的,暗部細節放大,當r=1,就是整體的線性操作
函數是imadjust(I,【】,【】,r)
⑤灰度閾值變換, 還沒看到這裏,待完善。
*加粗的地方我還不太確定,等以後修改