討論區快速選單
知識庫快速選單
Excel也能做到大數據分析? 討論區最近新進100則主題 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
想寫一個中值濾波器
更改我的閱讀文章字型大小
作者 : moumou(小籠包)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/4/13 下午 06:30:20
第一次碰有關影像處理的東西 想說寫個中值濾波器挑戰看看
我自己的作法是先將像素放到一維陣列中 再用sort的方式傳回中間的值
但是發現當陣列傳道sort的函式時 陣列裡面的值全部不對了...
而且sort函式好像會卡死....
搞了半天也不知道為什麼= =
請大家幫幫忙~~謝謝
部份程式碼:


  char FileName[255]="lena_noisy.bmp" ; // BMP File Name

  int Height,Width; //圖片是256*256
  int tempr[9]; //放R的陣列
  int tempg[9]; //放G的陣列
  int tempb[9]; //放B的陣列
  int x,y;
  open_bmp(FileName,r,g,b,Width,Height) ;
  
  for(int j=0;j<=Height-1;j++)
  {
    for(int i=0;i<=Width-1;i++)
    {
     int a=0;
     for(y=j;y<=j+2;y++) //3*3的遮罩
     {
     for(x=i;x<=i+2;x++)
     {
     tempr[a]= r[y][x]; //將pixel暫存到一個一維陣列 ,此時該陣列存的是9個pixel
     tempg[a]= r[y][x];
     tempb[a]= r[y][x];
     }
     a++;
     }
     r[y+1][x+1]=quicksort(tempr,0,9); //陣列執行Quiclsort 並回傳中間值
     g[y+1][x+1]=quicksort(tempg,0,9);
     b[y+1][x+1]=quicksort(tempb,0,9);
    }
  }


int quicksort(int *data,int left,int right)
{
    
   int pivot;
   int i,j;
   
   pivot=data[left];
   i=left+1;
   j=right;

   while(1)
   {
    
     while(i<right)
     {
     if(data[i]>pivot)
     break;
     i++;
     }
     while(j>left)
     {
     if(data[j]<pivot)
     break;
     j--;
     }
    
     if(i>j) break;
     swap(&data[i],&data[j]);
   } //end while
   
     swap(&data[left],&data[j]);
     quicksort(data,left,j-1);
     quicksort(data,j+1,right);
    
     return data[4];
    
}
void swap(int *a,int *b)
{
    int temp=*a;
    *a=*b;
    *b=temp;
}
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4464 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/4/13 下午 06:50:53
http://blog.csdn.net/hhygcy/article/details/4325462
作者 : moumou(小籠包)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/4/13 下午 07:26:44
我看過這篇了 但想要用自己的寫看看ˊ_>ˋ
還是謝謝
作者 : sunsea28(CloudKiss)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/17 下午 05:39:52
會停在quicksort就要去檢查quicksort那段程式. 有些地方有錯誤.

下面是由小至大排列的方式:
   int pivot;

   for(int i=0; i<right; i++) {
pivot=data[i];
for(int j=i; j<right; j++){
if(pivot > data[j]) {
swap(&data[i], &data[j]);
pivot=data[i];
}
}
   }
FYI~
作者 : sunsea28(CloudKiss)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/17 下午 05:40:04
會停在quicksort就要去檢查quicksort那段程式. 有些地方有錯誤.

下面是由小至大排列的方式:
   int pivot;

   for(int i=0; i<right; i++) {
pivot=data[i];
for(int j=i; j<right; j++){
if(pivot > data[j]) {
swap(&data[i], &data[j]);
pivot=data[i];
}
}
   }
FYI~
作者 : sunsea28(CloudKiss)
[ 貼文 3 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/17 下午 05:40:08
會停在quicksort就要去檢查quicksort那段程式. 有些地方有錯誤.

下面是由小至大排列的方式:
   int pivot;

   for(int i=0; i<right; i++) {
pivot=data[i];
for(int j=i; j<right; j++){
if(pivot > data[j]) {
swap(&data[i], &data[j]);
pivot=data[i];
}
}
   }
FYI~
 板主 : 徵求中
 > 影像處理與計算機圖學 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 影像處理與計算機圖學 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
影像處理與計算機圖學
1 Linkin 780 
2 CrazyStar 400 
3 青衫 360 
4 白老鼠(Gary) 330 
5 悠悠深藍 220 
6 none 220 
7 shou 200 
8 ultra 200 
9 ghost 140 
10 ozzy 130 
影像處理與計算機圖學
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875