| ²é¿´: 554 | »Ø¸´: 7 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
| µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû | |||
shanxixian3877Òø³æ (ÕýʽдÊÖ)
|
[½»Á÷]
¡¾ÇóÖú¡¿·ÖË®ÁëËã·¨·ÖÎöÈýάͼƬ
|
||
| Ó÷ÖË®ÁëËã·¨×öͼÏñÈýά·ÖÎö£¬µÃµ½ÈýάͼƬÖп׶´³ß´çºÍ¿×¶´Á¬½ÓͨµÀ³ß´çµÄ·Ö²¼Çé¿ö£¬°ïÎÒ±à¸ö³ÌÐò°É£¬¿ÉÒÔÌṩÏà¹ØÎÄÏ××ÊÁÏ¡¢¸ø±¨³ê£¬ÓеϰºÍÎÒÁªÏµ QQ443468935 |
» ²ÂÄãϲ»¶
Ò»Ö¾Ô¸»ª¶«Ê¦·¶´óѧÓлú»¯Ñ§×¨Òµ£¬³õÊÔ351·Ö£¬¸´ÊÔ±»Ë¢Çóµ÷¼Á!
ÒѾÓÐ4È˻ظ´
298Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
²ÄÁÏѧ˶333Çóµ÷¼Á
ÒѾÓÐ11È˻ظ´
0856Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
356Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
332Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
348Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
305Çóµ÷¼Á
ÒѾÓÐ8È˻ظ´
Ò»Ö¾Ô¸±±¾©»¯¹¤´óѧ²ÄÁÏÓ뻯¹¤£¨085600£©296Çóµ÷¼Á
ÒѾÓÐ13È˻ظ´
µ÷¼Á310
ÒѾÓÐ9È˻ظ´
rsb_long
ÖÁ×ðľ³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 15 (СѧÉú)
- ½ð±Ò: 19110.9
- Ìû×Ó: 1268
- ÔÚÏß: 405.3Сʱ
- ³æºÅ: 80232
- ×¢²á: 2005-07-14
- רҵ: ¼ÆËã»úÈí¼þ
¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
wangen994(½ð±Ò+3,VIP+0):¸ÐлÄã²ÎÓëÌÖÂÛ 7-1 18:33
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
wangen994(½ð±Ò+3,VIP+0):¸ÐлÄã²ÎÓëÌÖÂÛ 7-1 18:33
|
ÕâÊÇÒ»ÖÖµäÐ͵ÄͼÏñʶ±ðËã·¨ ±êÌâ:·ÖË®ÁëËã·¨ //Image Watershed Segmentation //This is the implementation of the algorithm based on immersion model. // =========================================================================== // ===== Module: Watershed.cpp // ===== -------------------------------------------------------------- ====== // ===== Version 01 Date: 04/21/2003 // ===== -------------------------------------------------------------- ====== // =========================================================================== // ===== Written by Foxhole@smth.org // ===== e-mail: gong200@china.com // =========================================================================== // Permission to use, copy, or modify this software and its documentation // for educational and research purposes only is hereby granted without // fee, provided that this copyright notice appear on all copies and // related documentation. For any other uses of this software, in original // or modified form, including but not limited to distribution in whole // or in part, specific prior permission must be obtained from // the author(s). // // THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, // EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY // WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. // // IN NO EVENT SHALL RUTGERS UNIVERSITY BE LIABLE FOR ANY SPECIAL, // INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY // DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, // WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY // THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE // OR PERFORMANCE OF THIS SOFTWARE. // =========================================================================== #include #include #include /*==================================================================== º¯ÊýÃû £º Watershed ¹¦ÄÜ £º Óñê¼Ç-·ÖË®ÁëËã·¨¶ÔÊäÈëͼÏñ½øÐзָî Ë㷨ʵÏÖ £º ÎÞ ÊäÈë²ÎÊý˵Ã÷ £º OriginalImage --ÊäÈëͼÏñ£¨»Ò¶Èͼ£¬0~255£© SeedImage --±ê¼ÇͼÏñ£¨¶þֵͼ£¬0-·Ç±ê¼Ç£¬1-±ê¼Ç£© LabelImage --Êä³öͼÏñ£¨1-µÚÒ»¸ö·Ö¸îÇøÓò£¬2-µÚ¶þ¸ö·Ö¸îÇøÓò£¬...£© row --ͼÏñÐÐÊý col --ͼÏñÁÐÊý ·µ»ØÖµËµÃ÷ £º ÎÞ ====================================================================*/ void Watershed(const int **OriginalImage, char** SeedImage, int **LabelImage, int row, int col) { using namespace std; //±ê¼ÇÇøÓò±êʶºÅ£¬´Ó1¿ªÊ¼ int Num=0; int i,j; //±£´æÃ¿¸ö¶ÓÁÐÖÖ×Ó¸öÊýµÄÊý×é vector //ÁÙʱÖÖ×Ó¶ÓÁÐ queue //±£´æËùÓбê¼ÇÇøÓòÖÖ×Ó¶ÓÁеÄÊý×é vector int* array; queue POINT temp; for(i=0;i int m,n,k=0; int up,down,right,left,upleft,upright,downleft,downright; //Ô¤´¦Àí,ÌáÈ¡Çø·Öÿ¸ö±ê¼ÇÇøÓò£¬²¢³õʼ»¯Ã¿¸ö±ê¼ÇµÄÖÖ×Ó¶ÓÁÐ //ÖÖ×ÓÊÇÖ¸±ê¼ÇÇøÓò±ßÔµµÄµã£¬ËûÃÇ¿ÉÒÔÔÚˮλÉÏÉýʱÏòÍâÑÍû£¨»òÕß˵Éú³¤£© for(i=0;i for(j=0;j //Èç¹ûÕÒµ½Ò»¸ö±ê¼ÇÇøÓò if(SeedImage[j]==1) { //ÇøÓòµÄ±êʶºÅ¼ÓÒ» Num++; //·ÖÅäÊý×é²¢³õʼ»¯ÎªÁã array=new int[256]; ZeroMemory(array,256*sizeof(int)); // SeedCounts.push_back(array); //·ÖÅä±¾±ê¼ÇµÄÓÅÏȶÓÁÐ uu=new queue //¼ÓÈëµ½¶ÓÁÐÊý×éÖÐ qu.push_back(uu); //µ±Ç°µã·ÅÈë±¾±ê¼ÇÇøÓòµÄÁÙʱÖÖ×Ó¶ÓÁÐÖÐ temp.x=i; temp.y=j; que.push(temp); //µ±Ç°µã±ê¼ÇΪÒÑ´¦Àí LabelImage[j]=Num; SeedImage[j]=127; //ÈÃÖÖ×Ó¶ÓÁÐÖеÄÖÖ×Ó½øÐÐÉú³¤Ö±µ½ËùÓеÄÖÖ×Ó¶¼Éú³¤Íê±Ï while(!que.empty()) { up=down=right=left=0; upleft=upright=downleft=downright=0; //¶ÓÁÐÖÐÈ¡³öÒ»¸öÖÖ×Ó temp=que.front(); m=temp.x; n=temp.y; que.pop(); if(m>0) { //ÉÏ·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓΪÐÂÖÖ×Ó if(SeedImage[m-1][n]==1) { temp.x=m-1; temp.y=n; que.push(temp); //ÐÂÖÖ×Óµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò LabelImage[m-1][n]=Num; SeedImage[m-1][n]=127; }else//·ñÔòÉÏ·½Îª²»¿ÉÉú³¤ { up=1; } } if(m>0&&n>0) { if(SeedImage[m-1][n-1]==1)//×óÉÏ·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓΪÐÂÖÖ×Ó { temp.x=m-1; temp.y=n-1; que.push(temp); //ÐÂÖÖ×Óµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò LabelImage[m-1][n-1]=Num; SeedImage[m-1][n-1]=127; }else//·ñÔò×óÉÏ·½Îª²»¿ÉÉú³¤ { upleft=1; } } if(m if(SeedImage[m+1][n]==1)//Ï·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓΪÐÂÖÖ×Ó { temp.x=m+1; temp.y=n; que.push(temp); //ÐÂÖÖ×Óµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò LabelImage[m+1][n]=Num; SeedImage[m+1][n]=127; }else//·ñÔòÏ·½Îª²»¿ÉÉú³¤ { down=1; } } if(m<(row-1)&&n<(col-1)) { if(SeedImage[m+1][n+1]==1)//Ï·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓΪÐÂÖÖ×Ó { temp.x=m+1; temp.y=n+1; que.push(temp); //ÐÂÖÖ×Óµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò LabelImage[m+1][n+1]=Num; SeedImage[m+1][n+1]=127; }else//·ñÔòÏ·½Îª²»¿ÉÉú³¤ { downright=1; } } if(n if(SeedImage[m][n+1]==1)//ÓÒ·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓΪÐÂÖÖ×Ó { temp.x=m; temp.y=n+1; que.push(temp); //ÐÂÖÖ×Óµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò LabelImage[m][n+1]=Num; SeedImage[m][n+1]=127; }else//·ñÔòÓÒ·½Îª²»¿ÉÉú³¤ { right=1; } } if(m>0&&n<(col-1)) { if(SeedImage[m-1][n+1]==1)//ÓÒÉÏ·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓΪÐÂÖÖ×Ó { temp.x=m-1; temp.y=n+1; que.push(temp); //ÐÂÖÖ×Óµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò LabelImage[m-1][n+1]=Num; SeedImage[m-1][n+1]=127; }else//·ñÔòÓÒÉÏ·½Îª²»¿ÉÉú³¤ { upright=1; } } if(n>0) { if(SeedImage[m][n-1]==1)//×ó·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓΪÐÂÖÖ×Ó { temp.x=m; temp.y=n-1; que.push(temp); //ÐÂÖÖ×Óµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò LabelImage[m][n-1]=Num; SeedImage[m][n-1]=127; }else//·ñÔò×ó·½Îª²»¿ÉÉú³¤ { left=1; } } if(m<(row-1)&&n>0) { if(SeedImage[m+1][n-1]==1)//×óÏ·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓΪÐÂÖÖ×Ó { temp.x=m+1; temp.y=n-1; que.push(temp); //ÐÂÖÖ×Óµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò LabelImage[m+1][n-1]=Num; SeedImage[m+1][n-1]=127; }else//·ñÔò×ó·½Îª²»¿ÉÉú³¤ { downleft=1; } } //ÉÏÏÂ×óÓÒÖ»ÒªÓÐÒ»µã²»¿ÉÉú³¤£¬ÄÇô±¾µãΪ³õʼÖÖ×Ó¶ÓÁÐÖеÄÒ»¸ö if(up||down||right||left|| upleft||downleft||upright||downright) { temp.x=m; temp.y=n; qu[Num-1][OriginalImage[m][n]].push(temp); SeedCounts[Num-1][OriginalImage[m][n]]++; } }//while½áÊø } } } bool actives;//ÔÚijһˮλ´¦£¬ËùÓбê¼ÇµÄÖÖ×ÓÉú³¤ÍêµÄ±êÖ¾ int WaterLevel; //ÑÍû¹ý³Ì¿ªÊ¼£¬Ë®Î»´ÓÁ㿪ʼÉÏÉý for(WaterLevel=0;WaterLevel<256;WaterLevel++) { actives=true; while(actives) { actives=false; //ÒÀ´Î´¦Àíÿ¸ö±ê¼ÇÇøÓò for(i=0;i if(!qu[WaterLevel].empty()) { actives=true; while(SeedCounts[WaterLevel]>0) { SeedCounts[WaterLevel]--; temp=qu[WaterLevel].front(); qu[WaterLevel].pop(); m = temp.x; n = temp.y;//µ±Ç°ÖÖ×ÓµÄ×ø±ê if(m>0) { if(!LabelImage[m-1][n])//ÉÏ·½Èôδ´¦Àí { temp.x=m-1; temp.y=n; LabelImage[m-1][n]=i+1;//ÉÏ·½µã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò if(OriginalImage[m-1][n]<=WaterLevel)//ÉÏ·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓÈ뵱ǰ¶ÓÁÐ { qu[WaterLevel].push(temp); } else//·ñÔò¼ÓÈëOriginalImage[m-1][n]¼¶¶ÓÁÐ { qu[OriginalImage[m-1][n]].push(temp); SeedCounts[OriginalImage[m-1][n]]++; } } } if(m if(!LabelImage[m+1][n])//Ï·½Èôδ´¦Àí { temp.x=m+1; temp.y=n; LabelImage[m+1][n]=i+1;//Ï·½µã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò if(OriginalImage[m+1][n]<=WaterLevel)//Ï·½ÈôΪ¿ÉÉú³¤µãÔò¼ÓÈ뵱ǰ¶ÓÁÐ { qu[WaterLevel].push(temp); } else//·ñÔò¼ÓÈëOriginalImage[m+1][n]¼¶¶ÓÁÐ { qu[OriginalImage[m+1][n]].push(temp); SeedCounts[OriginalImage[m+1][n]]++; } } } if(n if(!LabelImage[m][n+1])//ÓÒ±ßÈôδ´¦Àí { temp.x=m; temp.y=n+1; LabelImage[m][n+1]=i+1;//Óұߵã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò if(OriginalImage[m][n+1]<=WaterLevel)//ÓÒ±ßÈôΪ¿ÉÉú³¤µãÔò¼ÓÈ뵱ǰ¶ÓÁÐ { qu[WaterLevel].push(temp); } else//·ñÔò¼ÓÈëOriginalImage[m][n+1]¼¶¶ÓÁÐ { qu[OriginalImage[m][n+1]].push(temp); SeedCounts[OriginalImage[m][n+1]]++; } } } if(n>0) { if(!LabelImage[m][n-1])//×ó±ßÈôδ´¦Àí { temp.x=m; temp.y=n-1; LabelImage[m][n-1]=i+1;//×ó±ßµã±ê¼ÇΪÒÑÑÍÃ»ÇøÓò if(OriginalImage[m][n-1]<=WaterLevel)//×ó±ßÈôΪ¿ÉÉú³¤µãÔò¼ÓÈ뵱ǰ¶ÓÁÐ { qu[WaterLevel].push(temp); } else//·ñÔò¼ÓÈëOriginalImage[m][n-1]¼¶¶ÓÁÐ { qu[OriginalImage[m][n-1]].push(temp); SeedCounts[OriginalImage[m][n-1]]++; } } } }//whileÑ»·½áÊø SeedCounts[WaterLevel]=qu[WaterLevel].size(); }//if½áÊø }//forÑ»·½áÊø }//whileÑ»·½áÊø }//forÑ»·½áÊø while(!qu.empty()) { uu=qu.back(); delete[] uu; qu.pop_back(); } while(!SeedCounts.empty()) { array=SeedCounts.back(); delete[] array; SeedCounts.pop_back(); } } |
6Â¥2009-07-01 11:18:19
rjjy
ľ³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 3 (Ó×¶ùÔ°)
- ¹ó±ö: 0.734
- ½ð±Ò: 810.9
- É¢½ð: 697
- ºì»¨: 3
- Ìû×Ó: 1968
- ÔÚÏß: 249.6Сʱ
- ³æºÅ: 313012
- ×¢²á: 2007-02-24
- ÐÔ±ð: GG
- רҵ: Ô˳ïÓë¹ÜÀí
¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
| ·ÖË®ÁëËã·¨£¬ËµÊµÔÚµÚÒ»´ÎÌý˵¡£ÖªÊ¶ÕæÊǴ󺣣¡ |
2Â¥2009-06-15 00:37:37
wangen994
ÈÙÓþ°æÖ÷ (ÖøÃûдÊÖ)
½«¾ü
- ³ÌÐòÇ¿Ìû: 1
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ¹ó±ö: 3.348
- ½ð±Ò: 7797.4
- É¢½ð: 404
- ºì»¨: 5
- Ìû×Ó: 2007
- ÔÚÏß: 242Сʱ
- ³æºÅ: 649482
- ×¢²á: 2008-11-08
- ÐÔ±ð: GG
- רҵ: ÎïÀí
- ¹ÜϽ: ³ÌÐòÓïÑÔ
3Â¥2009-06-15 12:25:57
shanxixian3877
Òø³æ (ÕýʽдÊÖ)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 1027.8
- É¢½ð: 962
- ºì»¨: 5
- Ìû×Ó: 410
- ÔÚÏß: 228.2Сʱ
- ³æºÅ: 792309
- ×¢²á: 2009-06-11
- ÐÔ±ð: GG
- רҵ: Ò½ÓÃÉúÎï²ÄÁÏÓëÖ²Èë¿ÆÑ§
4Â¥2009-06-15 16:16:22














»Ø¸´´ËÂ¥