![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwJqtM1coPGKttbjtztLW6INIJj1Sgiy9Vj3Z0NzC351Jcsmw026HoeENOaxuwfI18eNEBaN3iXDsWM2DaifqTCwIyHspNqTgDaT92ggNq7wKyLT4liBHlAHzL3RstQi1pNg9LbYDprZM/s320/1.bmp)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJee9wiTWqzwfVxFz3ZPZ7HqY1nW5rXtfn8NP_VsWS681yvvudYY4mPewH6F3ddjDPCREJE4J_WYX3q-WE-777avppiYUYQ5fxbkXCKISZBGsBih_iYhRQzel4c5rZi4oYrndKSzXum-w/s320/4.bmp)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZN3ck4vZEF10DemtPPZunWlCQaEBJrjV4m3F4tf_jc8wcXkxAGorChnbahX6gz_DEePnQROCaA712BbWgs-BHvetlsuRj_GbPum5VCUD1KEQa4WUr6x3x-ZmPKQIK_o88KqPZzEx3Vik/s320/3.bmp)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPjkOEy6hzlJYjg5mKl9wF49SnsSznX7f-v03thLnIQWmoGup8O9-bM5RAGtFeauifi7QlfbVMBJCgQspep8eiEYKHozbQZcpXCi3jnREM_w7Fk__lOVlSrwBz-Kaz8X4Pjj5ngu-7SiY/s320/2.bmp)
直方圖均化:
成果
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUGp7uxq-JTb1RVfh_weQtH0bbyZpuQuaAK3XTTYRUFt1Hfz2ZqmcUKy5_IfIVknxwW-6m5vVzTeh1XYb0tDEYDdSezcTX1DF25b3LTwGvwWRTvhiHENAZY6h5-XMR5ahO-CRFsY5FKhI/s320/6.bmp)
這次的作業由於太晚開始寫,而沒有去仔細思考該如何寫與直方圖的演算法,
導致要寫的時候不知道如何動手,而且寫出來的結果也與所要求的結果不同,
最後只好參考老師去年寫的範例,在仔細研讀後,其演算法與程式是了解了,
但是唯一不懂的就是老師對物件的用法,因為不了解這部分後來就只好使用自己了解的物件來做出相對應的功能,但是在上課前未能如願的做出成果,
只好利用上課的時間跟老師討論,後來我將程式有套用到老師撰寫的部分全部重新寫過,
再使用自設的物件,程式就寫出來了。
會寫不出來原因就是每個人定義變數的名稱都不同,
因此就可能照成部分的地方發生錯誤,而使整個程式展現不出成果。
之後撰寫的均化時,因為前面程式都已經將Color RGB給判斷出來,
因此均化的程式
for (k=0;k
程式就完成了。
在測試時卻發生如下圖的情況:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2jMR0TH1KfLy4Lr0ofRisCG2ieuWOKMA7e3cApTKD-wFKN8UxsN3uTc3sUcI17z5-C6_cm2Fyzynfsor37gk_HkhJEWkzTtUwEId0S96PMGU8mU3WO2IBcBr0FQIkJsT1E_zsVHkYXBs/s320/5.bmp)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2jMR0TH1KfLy4Lr0ofRisCG2ieuWOKMA7e3cApTKD-wFKN8UxsN3uTc3sUcI17z5-C6_cm2Fyzynfsor37gk_HkhJEWkzTtUwEId0S96PMGU8mU3WO2IBcBr0FQIkJsT1E_zsVHkYXBs/s320/5.bmp)
之後檢查程式碼後,發現原來是我將判斷式寫成就算沒有選擇任何一顏色的畫圖,
程式也會自動選取一初值來進行判斷,之後我只將判斷式寫成如果沒有執行任何選項, 則將圖片片線條顏色變成白色,就解決問題了 。
if (HistogramCl->ItemIndex == 0)
histogram->Canvas->Pen->Color = clBlue;
else if (HistogramCl->ItemIndex == 1)
histogram->Canvas->Pen->Color = clGreen;
else if (HistogramCl->ItemIndex == 2)
histogram->Canvas->Pen->Color = clRed;
else
histogram->Canvas->Pen->Color = clWhite;
因此,程式只要在最後一項判斷式改成畫出白色就行了。
在寫完均化後,如果使用較案的彩圖與較亮的彩圖進行測試,
但是卻發生大量的雜訊,並無法有效的去除,
如圖
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy9GVPALHOveHVu7HTtJf1qlN5wjCW-ZqOKAwJXMnm2nuegwcZOI7Gxvf_41cWwbeOZ28BHA7fBJ5xnHLesf6t3qEkDDAQ0LS-uEQzgcxlg5rhw9nONlAu-HbW4UnGYlAPf8pDzVexbOU/s320/1.bmp)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6P9lfojQq0L7v0hOZ5iSGtR0DS8cxEjLtalcmKhH9UD0vE23Jycpafqyzvu6ZfqJKyEN6eB6HV3lPVDvsUTVO4VTmUcqaKLIdNWy7VYDXorUIWxU32bE_7jNI7kEbrBvD9u1WJpxBctk/s320/2.bmp)
較黑的圖在進行均化後,雖然有效的變亮了,但是周圍卻產生大量的紅藍色雜訊,
而較白的圖在進行均化後,雖然字體顏色有效的變暗了,但是圖裡卻有大量的不規則黑色,
我嘗試在均化時進行色彩的挑選,將超過一定色值的RGB Color保持原本的Color而不與其它進行均化,不過做出來的效果並不對,然後又嘗試在進行均化前先進行色彩的判斷,不過做出來的結果還是有許多雜訊,所以我想請問老師關於這種圖片改如何處理比較妥當??
沒有留言:
張貼留言