当前位置: 代码迷 >> 数据结构与算法 >> 栅格图像灰度值的累加求和,怎么优化空间复杂度
  详细解决方案

栅格图像灰度值的累加求和,怎么优化空间复杂度

热度:7348   发布时间:2013-02-26 00:00:00.0
栅格图像灰度值的累加求和,如何优化空间复杂度
输入一副灰度栅格图像,和某一个栅格(x,y),其灰度值为g,
需要输出(x,y)的矩形邻域内灰度值小于g的栅格个数。


如下图,绿色单元格的灰度值为g,其坐标为(x,y)

用I(x,y,g)表示蓝色框部分中灰度值小于或等于g的单元格个数,
即(x,y)和左上角构成的矩形区域中单元格灰度值小于或等于g的单元格个数。

用S(y-1,g)表示红色框列部分中灰度值小于或等于g的单元格个数。

则S(y,g)=S(y-1,g)+1

I(x,y,g)=I(x-1,y,g)+S(y,g)

当更新S(y,g)时,更新所有大于g的S(y,g')
即S(y,g+1) += 1
  S(y,g+2) += 1
  S(y,g+3) += 1
  ...
  S(y,255) += 1

该方法的时间复杂度一般和邻域大小无关,
但是要开辟n个和图像大小相同的空间,n是图像的灰度级。

如何降低该方法的空间复杂度呢?


------解决方案--------------------------------------------------------
LZ的意思是要建立一个与之相关的索引?按照楼主的方法建立索引的话,感觉空间复杂和时间复杂度都是挺高的(查询的话就很快,O(1)常数复杂度吧),而且对于变量g的话【0,255】,就应该另外开辟256*n(图像灰度级)的空间。
然后仔细一看,发现楼主的公式有些问题或者是我理解错误?看得头晕啊
一个点(x,y)的领域应该就是周围的几十个点吧?用遍历法计算空间复杂度是好低,时间复杂度不满足楼主 要求?
牺牲时间换空间,牺牲空间换时间,额。
  相关解决方案