發表文章

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

s1081415 作業6

圖片
題目說明:  主題: Run-Length Based Image Compression 練習 附件中為三張利用將晶片高度以色彩視覺化後的圖片。 請設計一個基於 Run-Length 的壓縮法方,對圖檔作無失真壓縮後儲存成新檔案。部落格上應敘述你的壓縮方法,提供壓縮檔之格式,並計算三張圖的平均壓縮率(compression ratio)。 環境:   C++ (visual studio 2019) 實作:  (左邊原圖, 右邊結果) 先把圖片讀進來,  然後執行Run-Length 壓縮法,  之後輸出壓縮後的圖檔,  最後再計算壓縮率 平均壓縮率:  (598.75%+598.75%+598.75%) / 3 = 598.75% 程式碼說明:  壓縮法核心code (執行細節附在註解, 這裡不多解釋) 最後計算壓縮率 實際Demo展示影片: 

s1081415 作業5

圖片
    題目說明:  主題: 膚色偵測 Skin Color Detection 利用你所學的 顏色(Color)的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。(請用附件中的三張照片做測試) Write a program that detect skin color from an image. 環境:   C++ (visual studio 2019) 實作:  (左邊原圖, 右邊結果) 先把圖片讀進來,  然後定義出皮膚的顏色範圍,  之後篩選出符合的區域,  最後再把區域塗上淡藍色 程式碼說明:  定義皮膚色範圍 利用inRange函數篩選出符合條件的像素 最後塗成淡藍色 實際Demo展示影片: 

s1081415 作業4

圖片
   題目說明:  主題: 影像還原練習 附件中的 image4 似乎受到某種頻域雜訊干擾,撰寫一個程式嘗試復原此圖像(將圖中雜訊去除)。 環境:   C++ (visual studio 2019) 實作:  (原圖) (去噪後的結果) 先把圖片讀進來,  之後再做高斯濾波法去噪,  去噪完後因為圖片變模糊所以再做圖片銳利化,  最後再做一些微調 程式碼說明:  GaussianBlur可以執行高斯濾波法去除圖片中的噪聲,  但會使圖片變得模糊 addWeighted可以執行圖片銳利化,  先設定遮罩後再進行銳利化 最後再利用addWeighted對圖片的對比度進行微調 實際Demo展示影片: 

s1081415 作業3

圖片
   題目說明:  主題: 離散傅立葉轉換 DFT 練習 撰寫傅利葉轉換程式(Forward Fourier Transform and Inverse Fourier Transform)將一張圖像轉換至頻域後,將頻譜大小與相位角度各以灰階 256 色圖像方式呈現出,再呈現還原後圖像。 環境:   C++ (visual studio 2019) 實作:  (頻譜圖) (相位圖) (結果還原圖) (以上為結果展示畫面) 執行傅立葉轉換後取得頻譜和相位圖,  之後再利用逆傅立葉轉換來還原原圖 程式碼說明:  執行DFT後稍做處理, (DFT和處理細節較為繁瑣, 在此不做展示和說明) 然後在螢幕上顯示頻譜圖 一樣稍做處理後在螢幕上顯示相位圖 最後做逆傅立葉轉換還原原圖 實際Demo展示影片: 

s1081415 作業2

圖片
  題目說明:  主題: 線條自畫像 (二值化與邊緣偵測 Image Thresholding and Edge Detection) 撰寫一個程式,以灰階模式讀取一張圖像 imread(path, IMREAD_GRAYSCALE) (a)利用 Sobel Operators 偵測並輸出邊緣成分圖 (b)設計一個類似素描線條的自畫像圖案。(想想:如何使用邊緣偵測所得到的點,結合 成看似素描筆畫出的線條?) 環境:   C++ (visual studio 2019) 實作:  (實際展示畫面) 先把圖片轉成灰階後讀進來,  之後再利用Canny的邊緣偵測抓出圖中物件的邊緣,  最後再利用bitwise_not把黑白色調顛倒做出上圖中的兩張結果 程式碼說明:  這次的內容比較簡單,  所以只說明關鍵的兩行,  Canny可以把原圖片(src)中取出物件邊緣,  利用low、high這兩個閾值加以調整,  最後輸出到結果(edge) bitwise_not可以把圖片的色調顛倒,  以此來題目中達到黑白顛倒的效果 實際Demo展示影片: 

s1081415 作業 1

圖片
題目說明:  主題: 圖像旋轉 (Image Rotation) 撰寫一個程式將一張圖像的(a)整張圖像,(b)中心內切圓區域,旋轉一個角度(逆時針旋 轉 0 度至 359 度):利用一個滑動條(trackbar)控制旋轉角度。  環境:   C++ (visual studio 2019) 實作:  (實際展示畫面) 兩個bar分別對應到題目的第(a)小題和(b)小題,  拖曳out_Angle可以使整張圖片旋轉, 如下圖 (使整張圖片旋轉37度) 拖曳in_Angle則可以只讓中心圓的部分旋轉, 如下圖 (使中心圓的部分旋轉46度) 程式碼說明:  旋轉的部分比較簡單, 單純透過呼叫一些函式來達到旋轉的目的, 在此不多做贅述 切出同心圓的部分則是判斷當前圖片的點是否在範圍內,  先切出範圍內的所有點形成一個圓之後再做旋轉,  最後再把原圖中這個範圍內的點覆蓋成旋轉後的圓,  最後呈現的效果就是只有圓形部分是旋轉的其餘保持不變 實際Demo展示影片: