顯示具有 05362640 周芸 標籤的文章。 顯示所有文章
顯示具有 05362640 周芸 標籤的文章。 顯示所有文章

2016年12月30日 星期五

05362640 周芸 學習感想


影像處理學習感想


這個學期的影像處理學習除了對一些處理圖像的原理有了進一步的認識之外還通過C++ Builder 自己實現了美圖APP上的功能收穫很多

其中最為印象深刻的應該是YUV色彩模型的講解通過保留圖像的光度改變彩度對圖片進行顏色的處理雖然一開始只是把它當作一種復古濾鏡的應用但是在老師提到了黑白影像處理的時候卻更是為之一亮將圖片進行界限分割然後對每一塊進行不同彩度的上色便能還原為彩色影像但是圖片邊界的準確分割卻是比較難的這也說明影像處理還有很多可以深入學習和研究的

在整個學習過程中通過老師講解的原理之後自己能夠實現一個類似美圖APP的視窗介面還是比較有成就感的特別是在隨著不斷的學習之後自己的應用功能逐漸的增加以前覺得特別高大上的Photoshop的部分功能自己也能夠做出來而且從原理進行學習而非是只被告訴這個功能可以除去雜訊更加好記住對影像處理就更加能夠得心應手了就拿魔術棒的例子來說這個之前學的演算法老鼠走迷宮就有著特別大的關係原來以前學的東西並非只是打打程式做做題就沒事了在許多的領域中都可以被應用工具也許早就在了手上我卻沒有意識到它的可用之處

最有趣的可以說是3D影像運用人眼視覺的原理將圖片處理成紅藍3D的形式就可以讓圖片立體顯現這是一個電腦+生物知識的實際應用操作影像處理可以應用在許多的領域

美圖秀秀把圖片處理由一段一段的代碼程式簡化為一個按鈕或者滑塊因此便受到歡迎程式師的工作就在於此把繁雜的工作通過不斷的debug然後簡化成一些簡單的操作供人們使用整個學期下來收穫了很多也意識到自己在整個學習過程中對於現有知識的學習需要更加深入的研究討論並且不斷提出質疑才能真正學的透徹同時在學習過程中需要靜下心來才能想的清楚特別是在打代碼的時候會因為一小會兒的分心就出現一個小bug這樣很浪費時間同時也不能把心思真正放在思考上

2016年12月24日 星期六

05362640周芸 HW06


色彩模型Colors Models


RGB色彩模型是由三個色彩通道紅R)、G)、B對一個圖元的顏色描述

YUV色彩模型和RGB色彩模型類似Y亮度)、UV彩度對顏色進行描述

RGB 可以通過YUV來轉換轉換公式如下










U為橫坐標V為縱坐標調節滑條Y可以看到RGB的顏色從暗到亮的變化情況

對照片進行彩度的處理
先對原先的照片進行灰階處理但是為了保留亮度方便之後的計算可以用原圖的RGB計算出Y並存入新圖片的RGB三個通道使R=G=B=Y


要得到灰階圖像就是把RGB的值存成一樣的但是也可以用8-bit的位元元存一個圖元的顏色但只是這樣就會變得特別奇怪
因此需要重新設定一個調色盤讓這個調色盤RGB的顏色都存成一樣的

但是在這裡我們取的是24bit的灰階影像因為目的影像是一個有彩度的圖像8-bit無法滿足

對灰階圖片做彩度處理因為Y值已經存在了灰階圖像中因此在右圖的YUV色彩圖中選U橫坐標V縱坐標),再用之前的轉換公式YUV的值轉換為RGB的值就能按照選中的彩度給灰階圖像塗上色彩



這裡通過mouse down 事件傳遞U V的值

由於Y是由原圖計算出來的因此右邊的滑條並不會起到影響如果Y可以隨滑條而改變那麼整張圖都會顯示一個顏色也就是說一個圖片如果通過YUV來顯示只能改變UV的值才能保障圖中的影像不會被破壞Y值必須是整張圖的每一個圖元點相對改變等量的值
這個模型可以應用在濾鏡中的復古模式和其它色彩模型
而圖片能夠在改變彩度之後還能夠看得出是圖像中的花,是因為受原來的圖片的亮度的不同區分出來。
YUV的色彩模型可以還原黑白影像為彩色影像,這需要先將影像判斷邊緣,然後切出每個部分來之後,對每個部分添加彩度,就可以還原為彩色影像。不過最難的就是在判斷邊界和去處背景,然後完美的切出圖像.


TrackBar元件的應用方法

05362640周芸 HW05



空間濾波Spatial  Filtering


平滑空間濾波器



依據積分的原理把圖片平滑化在一維的積分下就是取平均值因此可以運用一個遮罩選出處理的圖元點以及周圍的圖元點顏色取平均值後作為新的數值存回目的圖元點遮罩的範圍可以是3*3也可以是5*5甚至更大



W(-1,-1)

W(-1,0)

W(-1,1)

W(0,-1)

W(0,0)

W(0,1)

W(1,-1)

W(1,0)

W(1,1)

但是對於邊緣的點由於部分遮罩取不到色彩值因此只能將邊緣的點忽略不做處理
3*3




可以看出已經有一些模糊了,特別是鬍鬚不那麼的分明了

3*3帶權重


5*5:


5*5的遮罩由於遮罩過大使得周圍的黑色帶到了圖片中央.


5*5帶權重



帶權重的遮罩使得模糊的效果更好一些受到其它顏色深的部分的干擾程度不會太大
平滑濾波器在模糊化和雜訊處理方面得到廣泛的應用但是對於雜訊處理中值濾波器的效果會更好一些

中值濾波器


對圖片添加胡椒鹽雜訊

平滑濾波器對4%雜訊的處理:

可以看到效果很差,有一些印記,而且圖片也變得不明朗了.
中值濾波器的雜訊處理效果:
4%:

10%

16%
20%:
16%以下的雜訊消除效果都特別好16%之後就有一兩個白點20%之後白點才有些明顯
中值濾波器是選取遮罩中數值的中位數,也就是和周圍最為相關的顏色,既不會受到周圍的影響,還能根據周圍環境修正雜訊,因此比均值濾波器更好。

銳化空間濾波器



依據微分的原理把圖片的細節銳化在一維的積分下就是做差分因此可以運用一個遮罩選出處理的圖元點以及周圍的圖元點顏色將中間的值放大後減去周圍的值後作為新的數值存回目的圖元點

遮罩權重的分佈:

-1
-1
-1
-1
9
-1
-1
-1
-1

0
-1
0
-1
5
-1
0
-1
0
因为锐化后,如果这个某一点的颜色值与周围不同就会被放大,但是如果是相近的就不会受到太大的影响,因此让月球的陨石坑纹路更加明显。
*5銳化,紋路已經變得有些明顯了:
*9銳化紋路更加明顯

先平滑後銳化
先銳化後平滑


可以看出是以最後的操作步驟為主進行的處理如果最後一個步驟是銳化則紋路變得清晰如果是平滑則紋路變得模糊

先對圖像3*3均化濾波器平滑化,讓圖像遮罩部分的顏色接近一些,再通過銳化,*5的遮罩模式,又再次放大了圖像中每一點和遮罩區域的不同,所以最後還是會被銳化,但是銳化的程度會比只銳化而不事先平滑化的圖像紋路不會那麼明顯。反之,先銳化加深紋路後又平滑*5的遮罩模式平滑化,讓圖像遮罩部分的顏色接近一些,所以最後還是會被平滑化。





05362640 周芸HW03


LevelCurves

未處理過的圖像如果該圖元本身存儲的是某一個顏色值則顯示出來的顏色也是依舊不做改變也就是input=output


Level


將該圖像中的線當作是直線用函數的表示方法就是y=x

對輸入值的範圍和輸出的值進行修改新的直線y=kx+b

K=(OutPutMax-OutPutMin)/(InputMax-InputMin)
b=outputMin-k*inputMin;

通過上一章節的直方圖我們可以知道一張圖片的顏色值的分佈情況將集中的顏色範圍做出新的輸入值範圍:

圖片的顏色多了一些白濛濛的感覺直方圖的顏色分佈也沒有之前那麼的集中了

如果把其變成把0-255轉為255-0的輸出時照片就會變為底片的形式顯現而之前的直方圖也會對稱的反轉過去


這裡需要克服的問題是因為Edit控制項輸入的是字串需要讓輸入的值是數位因此需要進行設定
按兩下事件中的OnKeyPress

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
         if(Key<48||Key>57)Key=0;//0-9ASCII碼值範圍內有效
}
此外需要將Edit中的值轉為INT值進行運算
  inputMin=StrToInt(Edit1->Text);
         inputMax=StrToInt(Edit2->Text);
         outputMin=StrToInt(Edit3->Text);
         outputMax=StrToInt(Edit4->Text);

Curves

CurvesLevel略有不同PhotoshopCurves可以讓用戶確定14個點然後用光滑的曲線進行連接我們這裡簡化為用戶確定一個點(ppx,ppy)然後用一元二次函數的計算方式確定
Y=ax^2+bx+c
因為使用者確定了一個點而且曲線固定通過00)(255255兩個點三個點足以畫出該曲線



點擊Curves按鈕按一下refresh後可以得到下列圖像

如果滑鼠按一下在左上角時圖片會顯得白而亮一些直方圖也會有一些分散而不像之前那樣集中,因為每一個顏色的輸出都比之前的顏色數值更大,所以更加接近於白色。


如果滑鼠按一下在右上角時圖片會顯得灰一些偏向照片底色直方圖也會更加集中在一側,因為每一個顏色的輸出都比之前的顏色數值更小,所以更加接近於黑色,所以偏灰暗



這裡需要處理的問題是如何讓軟體知道滑鼠點擊位置並將座標返回顯現與螢幕中

Image的事件中按兩下OnMouseDown事件編寫程式: