發表文章

目前顯示的是有「s1091647」標籤的文章

s1091647 作業6

圖片
 作業6 Run-Length壓縮練習 功能 請設計一個基於 Run-Length 的壓縮方法,對圖檔作無失真壓縮後儲存成新檔案。  開發環境 Win10 C++ Open CV 4.6.0 VS 2022 程式實作 讀入檔案後使用Run-Length的兩層迴圈跑完整張圖後記錄一樣顏色的次數和顏色,壓縮後再把原檔案除以壓縮後的檔案,得到的比例*100就是圖片的壓縮率。 執行結果

s1091647作業5

圖片
 作業5 膚色偵測 功能 利用你所學的 顏色(Color)的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚 區域並將其標示出。(請用附件中的三張照片做測試) 開發環境 Win10 C++ Open CV 4.6.0 VS 2022 程式實作 讀入圖片後將圖片轉成HSV,並定義顏色範圍的下限和上限 創建一個mask,把顏色範圍內的像素設成白色,其他像素設為黑色 再將mask中白色部分設為黃色並輸出該圖像 執行結果                                                                 

s1091647 作業4

圖片
  作業四 影像還原練習 功能 附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像(將圖中雜訊去除)。 開發環境 Win10 C++ Open CV 4.6.0 VS 2022 程式實作 讀入圖片後使用medianBlur()中值濾波,原理是將該圖片一點的值用該點的一個區域的各個點的值的中值代替,藉此消除中間的躁聲值,這樣可以讓圖片更平滑。 做完中值濾波在對圖片做GaussianBlur()將圖片模糊化。 執行結果 原圖 中值濾波後 成果

s1091647 作業3

圖片
 作業三 傅立葉轉換 功能 撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還 原後圖像。 開發環境 Win10 C++ Open CV 4.6.0 VS 2022 程式實作 頻譜大小: 1.先用imread灰階模式讀入圖片 2.利用getOptimalDFTSize()取得DFT的最佳尺寸,並用copyMakeBorder()將邊緣補0 3.merge()合併通道,形成一個2通道的複數影像 4.dft() DFT轉換 5.split() 分離通道 6.magnitude()計算幅值圖像並用log取對數,再取log先加一防止log0出現 7.將圖像重新排列 8.normalize()正規化圖像 9.將正規化的圖像轉成8位元後輸出 相位角度: 1.phase()取相位 2.normalize()正規化圖像 3.將正規化的圖像轉成8位元後輸出 逆傅立葉轉換: 1.idft()進行反傅立葉轉換 2.split() 分離通道,並用magnitude()計算幅值圖像 3.normalize()正規化到0~255以顯示,最後轉換成8位元後輸出 執行結果 頻譜大小 相位角度 逆傅立葉轉換

s1091647 作業2

圖片
 作業二 線條自畫像 (Image Thresholding and Edge Detection) 功能: 以灰階模式讀取一張圖像 利用 Sobel Operators 偵測並輸出邊緣成分圖 設計一個類似素描線條的自畫像圖案 開發環境: Win10 C++ Open CV 4.6.0 VS 2022 實作: 以灰階模式讀取檔案   imread(file, IMREAD_GRAYSCALE) 輸出圖片       2.利用 Sobel Operators 偵測並輸出邊緣成分圖 Sobel() :分別針對圖中的x,y方向取梯度值。 convertScaleAbs() :由於Sobel()取的梯度值有可能為負值,因此需要做絕對值才能正常顯示。 addWeighted() :將前兩個圖像按照指定權重合併成一個圖像。                             輸出圖片        3.  設計一個類似素描線條的自畫像圖案 threshold() :將前一個輸出圖片做二值化。 bitwise_not() :將二值化的兩個輸出圖片做黑白反轉。 addWeighted() :將前兩個圖像按照指定權重合併成一個圖像。 GaussianBlur() :將合併後的圖像做高斯模糊,以達到素描效果。                       輸出圖片               

s1091647 作業1

圖片
 作業一 影像旋轉 Image Rotation 功能: 1.利用trackbar將整張圖像旋轉0度到359度 2.利用trackbar將圖像中心內切圓區域旋轉0度到359度 開發環境: Win10 C++ Open CV4.6.0 VS 2022 創造視窗、trackbar (A)Trackbar呼叫函式,並以Trackbar之degree以中心點旋轉並將圖像平移到rotated_image。 (B)創造一個原圖大小的遮罩並以中心取Circle(),利用getRotationMatrix2D()計算旋轉矩陣,在使用bitwise_and將兩圖合併,達到題目要求的效果。 (A)、(B)執行結果 執行影片: