图像的细化,我看不懂,请帮忙

red-fly 2003-07-23 09:44:29
在<数字图像处理>书上的p386页:

下面我们来看一个具体的细化算法:
一幅图像中的一个3X3区域,对各点标记名称p1,p2,...p8,其中p1位于中心。如果p1=1(即黑点),下面四个条件如果同时满足,则删除p1(p1=0)。
1. 2<=NZ(p1)<=6
2. Z0(p1)=1
3. p2*p4*p8=0 或者 Z0(p1)!=1
4. p2*p4*p6=0 或者 Z0(p4)!=1
对图像中的每一个点重复这一步骤,直到所有的点都不可删除为止。

问题:
NZ(p1)是什么意思?Z0是什么意思?Z0后边的参数是干什么的?
p2*p4*p8为什么要等于0?
我不懂这个细化的思路。
此段话上边的一个“火墙”例子我也不懂
希望大家给我提一提这个细化的思路

...全文
87 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
red-fly 2003-07-31
  • 打赏
  • 举报
回复
又一个问题:关于哈夫曼编码的

在《数字图像处理》第二版 一书中
1.第577页最下边用冒泡法对概率排序中,更新映射关系的for循环我想可以换成如下的就可以:
int it=iMap[i];
iMap[i]=iMap[i+1];
iMap[i+1]=it;

不知道大家对此有何看法?


2.在第578页的开始编码中,程序看不懂,感觉写得太麻烦了,有些地方还不正确,大家对此认可否?谈谈各自的看法,欢迎讨论...
red-fly 2003-07-30
  • 打赏
  • 举报
回复
不过,我看书上的经过细化后,比如字母i头上的一点好像没有了
书本上的图看起来是这样的
red-fly 2003-07-30
  • 打赏
  • 举报
回复
<<数字图像处理>>第二版,
2002年12月第2版,2002年12月北京第5次印刷
定价:72.00元(附光盘)
eastsun 2003-07-30
  • 打赏
  • 举报
回复



不知道你们看的是哪一版本,如果是98版,原书关于细化是有问题的。
red-fly 2003-07-25
  • 打赏
  • 举报
回复
看了算法的理论之后,再看一下书上的程序很好,因为书上的程序不是很麻烦,如果是很麻烦的程序,我也懒得去看,那太慢了
这部分的程序都比较简单,而且总体结构都是一样的,所以,一个程序中,很多都不需要去看,那些对话框的实现,我一个都没有看,主要是看书上对算法的实现部分
但有些很难呀,理论也看不懂,例子也看不懂,比如正交变换,真得很难,另外有的理论看不懂,但例子能看懂(仅是语句看得懂,原理当然还是不懂),比如灰度均衡
如果不看书上的程序的话,很多都是不会的,呵呵,所以没有办法,还得看书上的程序,但不需要看得非常仔细,看懂实现过程就可以了
red-fly 2003-07-24
  • 打赏
  • 举报
回复
是啊,如果本来很简单的话,一看程序就明白了,但有点麻烦的话,程序要看,但理论上也最好先搞个明白,这样,更不易忘记,
这样有道理吧?
BadEnglish 2003-07-24
  • 打赏
  • 举报
回复
你那本书我没有,我觉得看程序更清楚点
red-fly 2003-07-24
  • 打赏
  • 举报
回复
如果有这本书的话,请看一看这个例子(发现这本书上有好多错误的地方,只是不是非常重要而已,但也总是让人摸不着头脑),在p390页的最下边一句注释:
//判断p2*p4*p8=0 or Z0(p2)!=1
但在p386页中的四个条件中,却是:
p2*p4*p8=0 或者 Z0(p1)!=1
那么,这里究竟是Z0(p1)还是Z0(p2)呢?
red-fly 2003-07-24
  • 打赏
  • 举报
回复
好吧,哪让我再仔细地“研究研究”,如果还不懂的话,再来讨论

不过,我不知道对一幅24位图像进行二值化,在二值化时有会不会有什么条件?
ljranby 2003-07-24
  • 打赏
  • 举报
回复
呵呵,程序还是自己编的好 :) 你把上面的算法自己实现可能比看程序还快
BadEnglish 2003-07-23
  • 打赏
  • 举报
回复
NZ应该是8个邻居中黑点的数目
Z0=1应该是指中心点为黑
p2*p4*p8==0是避免黑线被打断
jackiesun 2003-07-23
  • 打赏
  • 举报
回复
它的模板是这样
p3 p2 p9
p4 p1 p8
p5 p6 p7
所以p2就是nb[1][2],p4=nb[2][1],p8=nb[2][3]。
仔细看看它给出的三个例子,就知道为什么要同时满足4个条件了。
red-fly 2003-07-23
  • 打赏
  • 举报
回复
程序中的一段是这样写的:

//nb[5][5]是一个5X5的模板
//判断p2*p4*p8=0 or Z0(p2)!=1
if(nb[1][2]*nb[2][1]*nb[2][3]==0)
bCont3=true;
else
{
nCount=0;
if(nb[0][2]==0 && nb[0][1]==1)
nCount++;
if(nb[0][1]==0 && nb[1][1]==1)
nCount++;
if(nb[1][1]==0 && nb[2][1]==1)
nCount++;
if(nb[2][1]==0 && nb[2][2]==1)
nCount++;
if(nb[2][2]==0 && nb[2][3]==1)
nCount++;
if(nb[2][3]==0 && nb[1][3]==1)
nCount++;
if(nb[1][3]==0 && nb[0][3]==1)
nCount++;
if(nb[0][3]==0 && nb[0][2]==1)
nCount++;
if(nCount!=1)
bCont3=true;
}

我不知道这里边的p2、p4、p8是什么东西,怎么也数不出2,4,8这几个点和程序的对应关系
楼主朋友说得有道理,但我感觉不到它们之间的关系,就是这样有什么道理可以让它们有关系
迷惑

4,449

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧