求用matlab 写一个连通区的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求用matlab 写一个连通区的代码相关的知识,希望对你有一定的参考价值。

大家好,我现在需要自己写一个可以标明一副图片中的连通区域的代码,即一个matlab函数。
规定格式为
function[result_image,number]=Clabel(image)
其中image 是我们要提供的测试图片,result_img是用不同颜色标记好的连通图,number即连通区域的个数。
如果不能给出result_image,只要能写出怎么得到number 就好。
注意:不能使用bwlabel哦,要自己写函数,分析矩阵来。(四连通)
谢谢大家
如果不能给出准确代码,给伪代码也不错了,但是希望能尽量贴近matlab的语法格式。

参考技术A 其实还好!

求用c#语言写一个将十进制转换为二进制的程序

用堆栈
请确定可用

呵呵,没有意义的事情,因为在内存里他都是二进制,所谓十进制二进制十六进制,只是显示的问题,也就是字符串的问题,要显示问题很好转换
如果要用堆栈,那就比较麻烦,也没有必要
///
///
堆栈
///
private
stack
intstack
=
new
stack
(
5
);
public
void
dtob(
int
inum
)

intstack.push(
inum
%
2
);
//
余数入栈
int
d
=
inum
/
2;
if
(
d
!=
0
)
dtob(
d
);
//
求下一个二进制位
return;

//下面是调用程序
public
static
void
main()

intstack.clear();
dtob(
11
);
stringbuilder
s
=
new
stringbuilder();
while
(
intstack.count
!=
0
)
s.insert(
0,
intstack.pop()
);
//
从堆栈中取出所有的二进制位
messagebox.show(
"二进制数:"
+
s.tostring()
);

//要转换下面的方法更简单,而且效率更高
public
string
dtob1(
int
inum
)

int
len
=
sizeof(
int
)
*
8;
stringbuilder
s
=
new
stringbuilder();
int
exmple
=
1
<<
len
-
1;
int
tmp
=
inum;
for
(
int
i
=
0;
i
<
len;
i++
)

if
(
(
tmp
&
exmple
)
==
0
)
s.append(
"0"
);
else
s.append(
"1"
);
tmp
<<=
1;

return
s.tostring();
参考技术A ///
///
堆栈
///
private
Stack
Intstack
=
new
Stack
(
5
);
public
void
DtoB(
int
iNum
)

Intstack.Push(
iNum
%
2
);
//
余数入栈
int
d
=
iNum
/
2;
if
(
d
!=
0
)
DtoB(
d
);
//
求下一个二进制位
return;

//下面是调用程序
public
static
void
Main()

Intstack.Clear();
DtoB(
11
);
StringBuilder
s
=
new
StringBuilder();
while
(
Intstack.Count
!=
0
)
s.Insert(
0,
Intstack.Pop()
);
//
从堆栈中取出所有的二进制位
MessageBox.Show(
"二进制数:"
+
s.ToString()
);

//要转换下面的方法更简单,而且效率更高
public
string
DtoB1(
int
iNum
)

int
len
=
sizeof(
int
)
*
8;
StringBuilder
s
=
new
StringBuilder();
int
exmple
=
1
<<
len
-
1;
int
tmp
=
iNum;
for
(
int
i
=
0;
i
<
len;
i++
)

if
(
(
tmp
&
exmple
)
==
0
)
s.Append(
"0"
);
else
s.Append(
"1"
);
tmp
<<=
1;

return
s.ToString();
参考技术B /*@file TenToX.cs*/
/*功能:用堆栈实现10进制到2,8,16进制的数字转换*/
using System;
using System.Collections;

class TenToX

static void Main(string[] args)

int num, baseNum;
Console.Write("输入十进制数字: ");
num = Convert.ToInt32(Console.ReadLine());
Console.Write("选择进制类型[2/8/16]: ");
baseNum = Convert.ToInt32(Console.ReadLine());
Console.Write(num + "=>转换 ");
MulBase(num, baseNum);
Console.WriteLine(" 进制基数" + baseNum);
Console.Read();

//用堆栈转换实现N进制间转换
static void MulBase(int n, int b)
Stack Digits = new Stack();
do
Digits.Push(n % b);
n /= b;
while (n != 0);

while (Digits.Count > 0)
Console.Write(Digits.Pop());



//end class

功能多了一些,稍微删减就行本回答被提问者采纳
参考技术C /// <summary>
/// 堆栈
/// </summary>
private Stack<int> Intstack = new Stack<int>( 5 );

public void DtoB( int iNum )

Intstack.Push( iNum % 2 ); // 余数入栈
int d = iNum / 2;
if ( d != 0 )
DtoB( d ); // 求下一个二进制位

return;


//下面是调用程序
public static void Main()

Intstack.Clear();
DtoB( 11 );
StringBuilder s = new StringBuilder();
while ( Intstack.Count != 0 )
s.Insert( 0, Intstack.Pop() ); // 从堆栈中取出所有的二进制位

MessageBox.Show( "二进制数:" + s.ToString() );


//要转换下面的方法更简单,而且效率更高
public string DtoB1( int iNum )

int len = sizeof( int ) * 8;
StringBuilder s = new StringBuilder();
int exmple = 1 << len - 1;
int tmp = iNum;
for ( int i = 0; i < len; i++ )

if ( ( tmp & exmple ) == 0 )
s.Append( "0" );
else
s.Append( "1" );

tmp <<= 1;


return s.ToString();
参考技术D C行吗?

以上是关于求用matlab 写一个连通区的代码的主要内容,如果未能解决你的问题,请参考以下文章

求用动态规划的方法求解简单的整数规划问题的matlab程序或者C++程序代码,高手们帮帮忙

跪求用牛顿迭代法解三元三次非线性方程组,急!! 在线等。。。MATLAB求解要代码

求用python写关于骰子的游戏!么么哒!

求用matlab实现fir滤波器(低通、高通,带通)

求用javascript代码写 求100以内是3的倍数并显示出来!

求用java写一个工具程序,能够查找基本数据类型数组中的指定数据,并返回该数据的索引值。