1. 作業題目:
請撰寫一個程式, 利用數學型態學影像處理運算,計算出所附圖像(共三張)每張圖像中圍棋個數。
2. 環境:
VS2015
opencv 2.4.13
3. 作業解說:
(1) 使用imread()讀入灰階圖片
(2) 利用threshold將圖片做二值化
(3) 運用getStructuringElement()設定dilate的element,我先用RECT形狀將圖片做膨脹,再用ELLIPSE圓形做膨脹修正。
(4) 計算棋子的數量: 讀取img的像素,遇到顏色為黑色的話,將四周50pixel的值以灰色取代,並計算棋子數量+1
4. 圖示:
A 圖一 找到24個棋子
B 圖二 找到28個棋子
C 圖三 找到31個棋子
2019年6月6日 星期四
2019年5月16日 星期四
s1051404的作業4
1. 作業題目:
利用 你所學的顏色的知識, 撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出 。2. 環境:
VS2015
opencv 2.4.13
3. 作業解說:
(1) 使用imread()讀入彩色圖片
(2) 運用YCrCb轉換圖片以利用inrange來找膚色範圍內的圖像
(3) 除了膚色範圍以外,一樣利用inrange尋找沙地及樹顏色範圍的圖像
(4) 利用for loop讓原圖片做比對,將膚色範圍以外的值以黑色代替
(5) 再利用for loop將inrange找出來的沙灘及樹木對比原圖並去除
4. 圖示:
AC
BD
A為尋找沙灘及樹木
B為人的膚色偵測
C為原圖比對膚色偵測後的結果
D為去除沙灘樹木的結果
利用 你所學的顏色的知識, 撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出 。2. 環境:
VS2015
opencv 2.4.13
3. 作業解說:
(1) 使用imread()讀入彩色圖片
(2) 運用YCrCb轉換圖片以利用inrange來找膚色範圍內的圖像
(3) 除了膚色範圍以外,一樣利用inrange尋找沙地及樹顏色範圍的圖像
(4) 利用for loop讓原圖片做比對,將膚色範圍以外的值以黑色代替
(5) 再利用for loop將inrange找出來的沙灘及樹木對比原圖並去除
4. 圖示:
AC
BD
A為尋找沙灘及樹木
B為人的膚色偵測
C為原圖比對膚色偵測後的結果
D為去除沙灘樹木的結果
2019年5月10日 星期五
s1051404的作業3
1. 作業題目:
請撰寫一個程式,讀取一張 256 色灰階圖像。 計算輸入圖的離散傅立葉轉換結果, 並
將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出。
2. 環境:
VS2015
opencv 2.4.13
3. 作業解說:
(1) 先使用imread(GRAYSCALE)讀取灰階圖像: Mat src = imread("1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
(2) 使用getOptimalDFTSize()找到最佳的大小,將原圖的邊界擴展至此大小,並用padding以0補充之
(3) 創建planes[],planes[0]儲存圖像實數(目前為圖像本身)、planes[1]儲存圖像虛數(目前為0)
(4) 使用merge(planes,2,complexImg); 將planes[0]和planes[1]的實數與虛數部分皆儲存至complexImg當中
(5) 對complexImg做dft
(6) 使用split將complexImg的實數虛數部分再次分開
(7) 將實數與虛數部分做arctan處理得到圖片的phase angle
(8) 做頻譜轉換,並重新編排將原點移至影像中央以向外做排列
(9) 使用idft得到原圖
請撰寫一個程式,讀取一張 256 色灰階圖像。 計算輸入圖的離散傅立葉轉換結果, 並
將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出。
2. 環境:
VS2015
opencv 2.4.13
3. 作業解說:
(1) 先使用imread(GRAYSCALE)讀取灰階圖像: Mat src = imread("1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
(2) 使用getOptimalDFTSize()找到最佳的大小,將原圖的邊界擴展至此大小,並用padding以0補充之
(3) 創建planes[],planes[0]儲存圖像實數(目前為圖像本身)、planes[1]儲存圖像虛數(目前為0)
(4) 使用merge(planes,2,complexImg); 將planes[0]和planes[1]的實數與虛數部分皆儲存至complexImg當中
(5) 對complexImg做dft
(6) 使用split將complexImg的實數虛數部分再次分開
(7) 將實數與虛數部分做arctan處理得到圖片的phase angle
(8) 做頻譜轉換,並重新編排將原點移至影像中央以向外做排列
(9) 使用idft得到原圖
2019年4月3日 星期三
1051404 作業二
1. 作業題目:
撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。
2. 環境:
VS2015
opencv 2.4.13
3. 作業解說:
(1) 先使用imread(GRAYSCALE)讀取灰階圖像:
Mat src = imread("1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
(2) 利用Sobel這個function分別讀取兩次 (X軸,Y軸方向各一次) 去分析出圖片的edge
(3) 使用模糊,GaussianBlur()這個function來消除edge以外的一些圖片雜訊
(4) 使用addWeighted()將兩個(X軸,Y軸)分析出edge的圖像組合在一起
(5) 最後我使用threshold(),以值80做為界線,將圖片的顏色區分為0和255。
撰寫一個程式,讀取一張256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。
2. 環境:
VS2015
opencv 2.4.13
3. 作業解說:
(1) 先使用imread(GRAYSCALE)讀取灰階圖像:
Mat src = imread("1.jpg", CV_LOAD_IMAGE_GRAYSCALE);
(2) 利用Sobel這個function分別讀取兩次 (X軸,Y軸方向各一次) 去分析出圖片的edge
(3) 使用模糊,GaussianBlur()這個function來消除edge以外的一些圖片雜訊
(4) 使用addWeighted()將兩個(X軸,Y軸)分析出edge的圖像組合在一起
(5) 最後我使用threshold(),以值80做為界線,將圖片的顏色區分為0和255。

2019年3月19日 星期二
1051404 HW1圖像亮度調整
1. 題目:
撰寫一個程式從檔案讀取一張圖像, 將圖像的每一個點像素的值各加上一個整數值(-255 to 255), 並將圖像儲存至一個新圖像檔案中。
撰寫一個程式從檔案讀取一張圖像, 將圖像的每一個點像素的值各加上一個整數值(-255 to 255), 並將圖像儲存至一個新圖像檔案中。
2. 環境:
Visual 2015
openCV 2.4.13
3. 作業解說:
這次作業我使用兩種方式實作:
(1) Image.at<uchar>(height, width)調整每一個像素的亮度 ,溢出的值超過255以255代替,低於0以0代替。
(2) Image.convertTo()這個function內建處理像素溢出的問題,以及對比度的調整。
最後以imwrite()儲存修改後的結果。
4. 圖示:
以cin的方式讓user決定調整的亮度。
Image.at/灰階圖片(亮度+100)↓
Image.at/灰階圖片(亮度-100)↓
convertTo/彩色圖片(亮度+100)↓
以imwrite()輸出圖片↓
訂閱:
文章 (Atom)