Presentation is loading. Please wait.

Presentation is loading. Please wait.

數位影像處理教學程式 萬能電子系 周建興.

Similar presentations


Presentation on theme: "數位影像處理教學程式 萬能電子系 周建興."— Presentation transcript:

1 數位影像處理教學程式 萬能電子系 周建興

2 開發環境介紹 使用軟體 Borland C++ Builder 6.0以上版本 個人電腦一台
程式網址 e_Program.htm 請下載Image4c.rar,並解壓縮執行

3 程式畫面 點擊projext1.exe執行檔

4 軟體功能簡介 開啟影像檔程式請看 File -->Open Image 儲存影像檔程式請看 File -->Save Image
量化程式(Quantization) 32 Color  -> 量化成32色 8 Color  -> 量化成8色 2 Color  -> 量化成2色

5 練習開啟與儲存影像檔案

6 練習用程式轉成2色影像

7 空間頻域之影像處理方法 Darker -> 變暗 Lighter -> 變亮 Inverse -> 反相
空間頻域之影像處理方法  Darker  ->  變暗 Lighter ->  變亮 Inverse ->  反相 Histogram Equalization - > 長條圖等化 Thresholding ->  取閥值做二值化處理 (修改數值會有 不同的結果)    Thresholding AutoSelecting ->  程式自行選取適當的閥 值做二值化處理   (可用H.bmp這張圖測試)

8 練習將影像變暗

9 練習將影像做反相

10 反相影像

11 練習長條圖等化

12 濾波器處理方法 (Filter) Lowpass Filter -> 低通濾波器
Highpass Filter - > 高通濾波器    Medium Filter -> 中值濾波器      (可用Lena-noise.bmp這 張圖測試) Sobel Filter ->  找Edue(邊緣)  (修改數值會有不同的結 果)

13 開啟被刮傷的影像

14 使用低通濾波器(模糊化)

15 使用中值濾波器處理受損影像

16 開啟H.bmp檔案

17 使用高通濾波器顯示邊界

18 使用SOBEL濾波器找邊界

19 描述方法 (Representation)
Thinning -> 細化 (可用H.bmp先取閥值後 在對這張圖 做細化 還原原始檔案  -> 點選"還原原始檔案"的按鈕  即可 還原成原始影像    )

20 程式中的參數說明 Image_Width 開啟影像的寬度 Image_Height 開啟影像的高度
Data[][] 儲存開啟影像與用來進行運算的陣列,此陣 列為二維陣列  Data[Image_Width][Image_Height] 第一維的大小是Image_Width   第二維的大小是 Image_Height

21 副函式說明如下 GetBitmap( ) 將影像的資料讀進預先宣告的Data[][]陣列 SetBitmap( )
Retrieve( ) 將Data[][]陣列中的資料還原回原始影像中的資料

22 練習用Borland C 修改程式 先用BCB打開專案檔

23 作業一:寫一個反相功能的程式 開啟後,請先點Run執行程式一次。 然後關閉執行的程式

24 作業一 點選unit.cpp

25 作業一 點Design, 打開程式的Form

26 作業一 點Main Menu1

27 作業一 點main menu空白處,來新增一個新的功能,在左邊 caption處取名為作業1

28 作業一 按下ENTER後,點作業1就會連結到可以寫程式的 地方

29 作業一 反相的原理,便是黑變白,白變黑 公式為 (假定為256色灰階影像) 反相後的數值 = 255-目前灰階值
影像的寬度會儲存在Image_Width 而影像的高度會儲存在Image_Height 因此利用兩個for迴圈,將每個像素的影像值予以更 改

30 作業一 程式範例 for(int i = 0; i < Image_Width; i++)
for(int j = 0; j < Image_Height; j++) Data[i][j] = Data[i][j]; SetBitmap(); SetBitmap是在像素值都被修改後,用來顯示影像的 函示。

31 作業一 寫好的程式碼 然後按Run(F9)執行程式

32 作業一 程式若沒有寫錯,執行的介面會出現一個新的作業 (1)按鍵。 開啟一張影像作測試

33 程式執行結果

34 作業二:寫一個簡易的變亮處理 同樣的步驟,先做出作業二的按鈕

35 作業二:寫一個簡易的變亮處理 簡易的變亮方法,就是增加每個像素的灰階影像數 值。 例如:變量後數值=原始灰階值+40
但是要注意影像數值不可超過255 因此要用IF判斷式,將大於255的數值改為255

36 作業二:寫一個簡易的變亮處理 程式範例 for(int i = 0; i < Image_Width; i++)
for(int j = 0; j < Image_Height; j++)\ { Data[i][j] = Data[i][j]+40; if(Data[i][j] >255) Data[i][j] = 255; } SetBitmap();

37 作業二:寫一個簡易的變亮處理 點擊作業二後,輸入程式碼。 然後執行程式。

38 作業二:寫一個簡易的變亮處理

39 執行結果

40 作業討論 如果增加40改為增加20或80,會有什麼不同? 作業三:請製作一個簡易的變暗處理程式。 (提示:將影像灰階值變小,並大於0)
請自行練習作業三。

41 作業四:做影像左右翻轉(鏡射) 將影像左右不同位置像素的灰階值,做 調換。

42 作業四: int temp = a; a=b; b=temp;
重點一: 交換程式:假設a=5, b=3 。a,b兩個變數要交換 程式: int temp = a; a=b; b=temp; temp的功用是暫時儲存a的數值,等到b的值給a 後,便可將暫存於temp值,儲存給b。

43 作業四: 重點二:如果矩陣中有十個數值要兩兩交換, 則只需要交換五次即可。(也就是一半的次數)

44 作業四: 先點右邊Standard,在TButton點一下 然後在Design上點一下新增一個按鈕

45 作業四: 將按鈕更名為作業四,並點擊後撰寫程式。

46 作業四: 程式碼 Image_Width要改成Image_Width/2

47 作業五:垂直翻轉 迴圈中,調換的是垂直方向的數值,也就是 j 要變 動。 Image_Height要改成Image_Height/2

48 作業六:旋轉180度 提示:要各執行水平翻轉,與垂直翻轉各一次。


Download ppt "數位影像處理教學程式 萬能電子系 周建興."

Similar presentations


Ads by Google