顯示具有 1051451 標籤的文章。 顯示所有文章
顯示具有 1051451 標籤的文章。 顯示所有文章

2019年6月4日 星期二

s1051451 作業5

一、作業題目
   請撰寫一個程式,利用數學型態學影像處理運算,計算出所附圖像(共三張)每張圖像中圍棋個數。
   a. 請在部落格呈現經由數學型態學影像處理運算後的圖像,同時要呈現你程式輸出棋子數量的螢幕截圖。b. 程式不一定可以算出正確棋子數量,越接近正確答案越好!

二、開發環境
visual studio 2015、opencv 3.4、windows 10

三. 實作內容
用opencv3的霍夫變換做圓環檢測
opencv中霍夫變換函數:
void HoughCircles(InputArray image,OutputArray circles, int method, double dp, double minDist, double param1=100,double param2=100, int minRadius=0, int maxRadius=0 )

1.InputArray image:輸入圖像,即源圖像,需為8位的灰度單通道圖像。

2.OutputArray circles:經過調用HoughCircles函數後此參數存儲了檢測到的圓的輸出矢量,每個矢量由包含了3個元素的浮點(vec3d)矢量(x, y, radius)表示。

3.int method:使用的檢測方法,目前OpenCV中就霍夫梯度法一種可以使用,它的標識符為CV_HOUGH_GRADIENT,在此參數處填這個標識符即可。

4.double dp:用來檢測圓心的累加器圖像的分辨率於輸入圖像之比的倒數,且此參數允許創建一個比輸入圖像分辨率低的累加器。上述文字不好理解的話,來看例子吧。例如,如果dp= 1時,累加器和輸入圖像具有相同的分辨率。如果dp=2,累加器便有輸入圖像一半那麼大的寬度和高度。

5.double minDist:為霍夫變換檢測到的圓的圓心之間的最小距離,即讓我們的算法能明顯區分的兩個不同圓之間的最小距離。這個參數如果太小的話,多個相鄰的圓可能被錯誤地檢測成了一個重合的圓。反之,這個參數設置太大的話,某些圓就不能被檢測出來了。

6.double param1=100:有默認值100。它是第三個參數method設置的檢測方法的對應的參數。對當前唯一的方法霍夫梯度法CV_HOUGH_GRADIENT,它表示傳遞給canny邊緣檢測算子的高閾值,而低閾值為高閾值的一半。

7.double param2=100:有默認值100。它是第三個參數method設置的檢測方法的對應的參數。對當前唯一的方法霍夫梯度法CV_HOUGH_GRADIENT,它表示在檢測階段圓心的累加器閾值。它越小的話,就可以檢測到更多根本不存在的圓,而它越大的話,能通過檢測的圓就更加接近完美的圓形了。

8.int minRadius=0:有默認值0,表示圓半徑的最小值。


9.int maxRadius=0:有默認值0,表示圓半徑的最大值。

四、實作結果

圖片一(IMG_5702/a)






圖片二(IMG_5703/b)
 





圖片三(IMG_5704/c)







2019年5月16日 星期四

s1051451 作業4

一、作業要求


利用所學的顏色的知識,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。


二. 使用環境

visual studio 2015、opencv 3.4、windows 10

三. 實作內容

利用Opencv自帶的橢圓生成函數生成一個膚色橢圓模型
ellipse(Mat& img, Point center, Size axes, double angle, double startAngle, double endAngle,
const Scalar&color, int thickness=1, int lineType=8, int shift=0)
參數image為需要繪製橢圓的圖像; 參數center是該橢圓的中心點坐標; 參數axes是該橢圓的長半軸和短半軸; 參數angle是該橢圓和水平方向上的旋轉夾角; 參數startAngle表示繪製橢圓弧線相對該橢圓自己的水平軸的起始角度; 參數endAngel表示繪製橢圓弧線相對該橢圓自己的水平軸的終止角度;

四. 實作結果

1.原圖
2.皮膚檢測圖


2019年5月13日 星期一

s1051451 作業3

一、作業說明:
請撰寫一個程式,讀取一張 256 色灰階圖像。計算輸入圖的離散傅立葉轉換結果,並將頻譜大小與相位角度各以灰階256 色圖像方式呈現出。

二、實作環境:
visual studio 2015、opencv 3.4、windows 10

三、程式流程
程序流程
1、加載圖像,格式為灰度圖
2、獲取圖片dft變換的最佳大小
3、邊框加0的方式填充圖片,即非0部分為dft變換的最佳大小 
4、創建數組儲存圖像實部虛部,且合併到complexI
5、傅裡葉變換 dft(complexI, complexI)
6、重新分離實部虛部,並且計算幅度
7、將幅度映射到對數域
8、以圖像中心為原點劃分象限,每個象限創建一個ROI
9、對角象限互換

10、顯示結果

四、執行結果:
1.原圖
2.頻頻圖

3.相位圖

2019年3月31日 星期日

s1051451 作業2

作業簡介:
撰寫一個程式,讀取一張 256 色灰階圖像或 RGB 全彩圖像(.bmp 或.jpg 圖像格式都可) ,利用 Sobel Operators 偵測圖像邊緣,並以邊緣偵測為基礎(如彩色圖像針可先將圖片 由 RGB 轉換至 HIS 或 YUV, YCbCr 等色彩空間,只需對亮度 Channel I 或 Y 處理,再 轉回 RGB 即可),設計一個類似素描線條自畫像程式。(如果可以分析邊緣偵測所得到 的點,結合成線條方式呈現更佳!)

使用環境:
visual studio 2015、opencv 3.4、windows 10

實驗內容;
使用sobel()函式分別對影像進行水平和垂直模板的運算,得到像素的梯度。

Gx用來檢測垂直邊緣,Gy用來檢查水平邊緣。
先把彩色圖片轉換成灰階,再用convertScaleAbs()函數將其轉回原來的uint8形式。最後還需要用addWeighted()函數將其組合起來。

 執行結果:



2019年3月20日 星期三

1051451 作業1

一、作業題目:
撰寫一個程式從檔案讀取一張圖像,將圖像的每一個點像素的值各加上一個整數值 v (-255 <= v <= 255),並將圖像儲存至一個新圖像檔案中。

二、環境設置:
1.Visual Studio 2015
2.opencv 3.4.0

三、執行步驟:
1.把想要修改的圖片放在文件夾中
2.輸入想要調整的亮度,輸入的數值介於-255到255之間
3.結果呈現(原圖及調整後)

四、執行結果:

1.輸入調整的數值

2.原圖及調整為-128較暗的圖片

3.原圖及調整為128較亮的圖片