我是刚刚开始学习图形学的入门者,现在有一张统计图,要求输出它的每一条状的占的比例。

NextMoon 2007-10-27 12:46:42
比如我的一张JPG的条形图是这样的:
-------------------------------------------|
| |
| |
| |
| |
| |
| -- |
| -- |
| -- -- |
| -- -- -- |
| -- -- -- |
| -- -- -- |
—————————————————————————
这张统计图是这样的,当然在JPG里更形象,三条表示实物的条形状,想请教就是三条在各自的垂直位置占多少比例,用图形识别的方法来做。这个曲线比较简单,假如是一个条形状更多的图形,每条所占的比例都要求计算出来。假如整个图形的高度是200象素,如果第一条所占的象素是100象素,那么这个比例的数据是0.5。依次类推,给我点提示,需要用到哪些知识,怎么样去解决去,问问各位图象处理的高手了,包括知道的,反正是有这方面知识的人,都可以给我点提示。
...全文
141 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
NextMoon 2007-10-30
  • 打赏
  • 举报
回复
楼上的倒是给出了一点思路,我希望能够处理的代码,或者再详细点。我会把JPG图载入自己的工程,然后转换BMP之后显示。主要中间运算处理。
凤矶 2007-10-29
  • 打赏
  • 举报
回复

//1. 加载jpg,这个网上源很多,嫌麻烦就把JPG转成BMP,然后LoadImage()
//2.
// 假设 宽width 高height 32位 每个直方柱宽 cx, 直方柱数 #define NUM 8
// 假定已经取得图像数据 lpBits(不是头,是真正的图像数据)

Begin()
{
float result[NUM];
for(int i=0; i< NUM; i++)
{
result[i] = GetPart(i);
}
}

float GetPart(int i)
{
int xx = i*cx + cx/2;
int red, green, blue; // *1
for(int j=0; j< height; j++)
{
if(j == 0)
{
blue = *(lpBits+j*width*4+xx*4); // *2
green = *(lpBits+j*width*4+xx*4+1);
red = *(lpBits+j*width*4+xx*4+2);
continue;
}

if(blue != *(lpBits+j*width*4+xx*4) || // *3
green != *(lpBits+j*width*4+xx*4+1) ||
red != *(lpBits+j*width*4+xx*4+2))
return ((float)(height-j))/(float)height;
}

if(j == height)
return 0.0f; // *4
}

// *1 怎样取得r,g,b值,如果你的图上画100%刚好与图像一样高就无法得到底色这样就不能分别100%与
// 0%,所以图像最好上部有空余部分或已经知道了底色(除非你确定没有100%与0%)。
// *2 这里是取底色(如果已经知道了可以去掉),如果是24位 要乘3
// *3 这里是比较,如果图像有噪声且没有做去噪处理,这里要加误差 如abs(blue - *(lpBits+j*width*4+xx*4)) > 10
// (差值在10以内认为是同一种色)
// *4 如*1所述,100%与0%的区别问题
NextMoon 2007-10-29
  • 打赏
  • 举报
回复
楼上的能否给我点提示代码啊。
凤矶 2007-10-29
  • 打赏
  • 举报
回复
不用转灰度,只要与底色的对比比较明显就行了
NextMoon 2007-10-29
  • 打赏
  • 举报
回复
怎么没人来说呢?自己顶一下。
NextMoon 2007-10-27
  • 打赏
  • 举报
回复
是不是先把它转换成灰度图,然后利用识别算法,具体像素值比较,能不能给我一段实例的代码,我想参考一下,或者楼上的给我写个函数。谢谢了。
凤矶 2007-10-27
  • 打赏
  • 举报
回复
1.加载JPG.
2.取得图像像素数据
3.从左到右从上到下搜索(根据图的大小和色彩位深计算偏移取得像素值,做比较)

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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