顯示具有 01360681 許智綱 標籤的文章。 顯示所有文章
顯示具有 01360681 許智綱 標籤的文章。 顯示所有文章

2015年1月15日 星期四

HW4 資工三乙 01360681 許智綱

這次的作業要對圖片進行修圖的動作可分成三類

平滑濾波器(強/弱),銳化濾波器(強/弱),以及胡椒鹽雜訊(黑白點/中值濾波)

然後中值濾波那段程式碼我參考同學的看不太懂,所以就沒有寫進去

再來不知道是不是照片的關係我發現強化弱化平滑濾波器好像沒甚麼太大的差別,


這張為原圖

                                                          經過弱化平滑濾波處理後


這張為弱銳化濾波器處理後的對比照


強銳化濾波器作出來的效果還滿像用粉筆畫化的感覺
油騎士後面綠地的部分


                                                       胡椒鹽雜訊遠看其實滿像在下雪的
                                                          黑點的部分看起來沒有很明顯,
                                                            也可以自己控制雜訊的比例

如果看完講義加上參考同學的做一做並沒有甚麼很大的困難,除了中值濾波器那段看不太懂之外,還有銳化濾波器把微積分和影像處理結合那裡的過程看了頭就暈,如果要自己導出那公式,我看程式永遠都寫不出來了..

程式碼:https://www.dropbox.com/s/msva5pdk8somwff/Unit1150231.cpp?dl=0

HW3 資工三乙 01360681 許智綱


tabsheet1裡放的是原圖
tabsheet2裡放的是色階調整後的圖
tabsheet3放的是色街調整函數圖

一開始想要有tabsheet這種可以選不同頁面的效果就找了好久
然後懶的每次跑程式都要重設定maxinput mininput maxoutput minoutput
所以就把值直接先設到textbox裡(edit)省去麻煩

然後照著講義上的公式便可以輕鬆的把圖片做色階的調整
公式就有點像是比例的換算而以,沒有說很難以理解


                                             這是原圖案下Button後開始做色階調整


                                                                 調整後tabsheet2的圖片如下
                                          顏色鮮豔了很多,不過像後面樹的顏色就變有點黑黑的


                                                               色階調整函數圖
                                                   左上角為(0,0)X軸跟平常一樣是增
                                    然後Y軸變為往下為增,畫的時後腦袋會有點轉不過來
                                                       用筆在紙上畫了好多次的圖


接下來就試著把輸出的最大最小值也跟著修改
發現顏色變得灰沉沉毫無生氣的FU
色階調整函數圖的位置也跟講義上一樣改變了



             
                                   
          程式碼:https://www.dropbox.com/s/2vasyhqsb64xpsi/Unit115.cpp?dl=0

2015年1月14日 星期三

HW2 資工三乙 01360681 許智綱

一開始點選自己要的圖片


                                                           然後畫出機率密度函數圖(PDF)




                                                            接著畫出累積分佈函數圖(CDF)
                                                                        PDF的圖被覆蓋住


                                                                  清除PDF後畫CDF




                                                                     用另一張圖來試


以下是C#做出來的效果



這裡做的是把圖的寬跟高用iImageWidth及iImageHeight來表示

void __fastcall TForm1::Image1Click(TObject *Sender){
  if(OpenPictureDialog1->Execute())
Image2->Picture->LoadFromFile(OpenPictureDialog1->FileName);
iImageWidth=Image2->Picture->Width;
iImageHeight=Image2->Picture->Height;
}



//---------------------------------------------------------------------------
void __fastcall TForm1::HistogramClick(TObject *Sender)
{

for(i=0; i<=255; i++)
{
arr_Blue[i] = 0;
arr_Green[i] = 0;
arr_Red[i] = 0;
}
          把陣列裡的數值歸零




for(j=0; j<iImageHeight; j++)
{
bPtrImageRow = (Byte *)Image2->Picture->Bitmap->ScanLine[j];
for(int i=0; i<iImageWidth; i++)
{
arr_Red[bPtrImageRow[3*i+2]]++;
arr_Green[bPtrImageRow[3*i+1]]++;
arr_Blue[bPtrImageRow[3*i+0]]++;
}
}
        計算出三個色彩中數值0-255所分別出現的次數


for(i=0; i<=255; i++)
{
Image6->Canvas->Pen->Color = clRed;
Image6->Canvas->MoveTo(i,150);
Image6->Canvas->LineTo(i,150 - arr_Red[i]/80);

Image5->Canvas->Pen->Color = clGreen;
Image5->Canvas->MoveTo(i,150);
Image5->Canvas->LineTo(i,150 - arr_Green[i]/80);

Image4->Canvas->Pen->Color = clBlue;
Image4->Canvas->MoveTo(i,150);
Image4->Canvas->LineTo(i,150 - arr_Blue[i]/80);
}
}
畫出PDF圖再介面右半邊
//---------------------------------------------------------------------------
void __fastcall TForm1::CDFClick(TObject *Sender)
{
BSum=0;
RSum=0;
GSum=0;
for(i=0; i<=255; i++)
{
arr_Blue[i] = 0;
arr_Green[i] = 0;
arr_Red[i] = 0;
}
一樣先把陣列裡數值歸零

for(j=0; j<iImageHeight; j++)
{
bPtrImageRow = (Byte *)Image2->Picture->Bitmap->ScanLine[j];
for(i=0; i<iImageWidth; i++)
{
arr_Blue[bPtrImageRow[3*i+0]]++;
arr_Green[bPtrImageRow[3*i+1]]++;
arr_Red[bPtrImageRow[3*i+2]]++;
}
}

跟畫PDF時一樣計算出色彩值0-255每個值出現的次數


for(i=0; i<=255; i++)
{
BSum+=arr_Blue[i];
RSum+=arr_Red[i];
GSum+=arr_Green[i];
Image4->Canvas->Pen->Color = clBlue;
Image4->Canvas->MoveTo(i,150);
Image4->Canvas->LineTo(i,150 - BSum/3000);

Image5->Canvas->Pen->Color = clGreen;
Image5->Canvas->MoveTo(i,150);
Image5->Canvas->LineTo(i,150 - GSum/3000);

Image6->Canvas->Pen->Color = clRed;
Image6->Canvas->MoveTo(i,150);
Image6->Canvas->LineTo(i,150 - RSum/3000);
}
}
畫出CDF圖
而那個除3000是為了讓極值不會衝出畫面
//---------------------------------------------------------------------------
void __fastcall TForm1::ClearClick(TObject *Sender)
{
iImageWidth4=Image4->Picture->Width;
iImageHeight4=Image4->Picture->Height;
for(j=0;j<=iImageWidth4;j++)
{
Image4->Canvas->Pen->Color = clWhite;
Image4->Canvas->MoveTo(j,0);
Image4->Canvas->LineTo(j,iImageHeight4);

Image5->Canvas->Pen->Color = clWhite;
Image5->Canvas->MoveTo(j,0);
Image5->Canvas->LineTo(j,iImageHeight4);

Image6->Canvas->Pen->Color = clWhite;
Image6->Canvas->MoveTo(j,0);
Image6->Canvas->LineTo(j,iImageHeight4);
}
將圖用白色覆蓋過去


這是第一次用C++Builder寫程式,所以當然只能多
參考多問別人,語法也跟之前用的程式差異滿大的,
除了語法外的問題大概就時畫圖時即直飛出畫面
外了。

HW1 資工三乙 01360681 許智綱

Little photo

此APP在Play商店的評價分數如下圖

















進入APP的畫面,可選擇現有的相片或是立刻拍一張照片

 

















此APP的工能列表-1












此APP的工能列表-2











當選擇完特效後,只要按下Apply就能套用
APP就會對照片的色彩值做調整

 










而Apply下面的Half Apply點了之後可以進行此特殊效果的強烈程度,另外當按選擇了某特效並Apply後可再對此張照片設定別種特效,即可達到特效混再一起的效果












也可加入插圖,或者選擇邊框(白色圓角)












然後這是我自己最喜歡的特效之一(Lomo菲林)