OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6928|回复: 6

[ALTERA] 数字识别教程 代码中 图像分割模块 的若干疑问

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-10-30
在线时间
14 小时
发表于 2020-7-15 10:56:31 | 显示全部楼层 |阅读模式
1金钱
看了好两三天了,还是懵懵的,问题如下
          这个模块里, 垂直投影 和 垂直投影边界  有啥区别?
          垂直投影的时候得到的不应该是上下边界么,怎么叫  col_border_addr_wr 呢?
          垂直投影的时,应该首先检测到像素从1到0变化(从白色背景到黑字),此时应该可以确定是上边界,不应该是row_border_addr_wr + 1么,怎么是col_border_addr_wr <= col_border_addr_wr + 1'b1?
          还有这句,真的看不懂col_border_data_wr <= h_raddr - 2'd2;   //RAM的列读地址—2赋给列边界写数据????
请大家看懂的话还请教一下


st_process:begin
            if(h_raddr == H_PIXEL)                                        //从u_h_myram里读完一行的列黑白数据,投影就完成了?
                project_done_flag <= 1'b1;
            else begin
                cnt <= 'd0;
                h_raddr <= h_raddr + 1'b1;                                //从u_v_myram里读一行的行黑白数据
                v_raddr <= (v_raddr == V_PIXEL) ? v_raddr : (v_raddr + 1'b1);
                project_done_flag <= 1'b0;
            end
            if(h_rise) begin                                        //列像素从0到1变化(从黑字到白色背景变化)
                num_col_t <= num_col_t + 1'b1;                        //列数+1
                col_border_addr_wr <= col_border_addr_wr + 1'b1;//垂直投影边界写地址+1
                col_border_data_wr <= h_raddr - 2'd2;                       //RAM的列读地址—2赋给列边界写数据    ????
                col_border_ram_we  <= 1'b1;                                //垂直投影边界ram写使能
            end
            else if(h_fall) begin                                //像素从1到0变化(从白色背景到黑字变化)
                col_border_addr_wr <= col_border_addr_wr + 1'b1;        //垂直投影边界写地址+1(col_border_addr_wr[0]=1时,存放的是右列边界)
                col_border_data_wr <= h_raddr + 2'd2;                        //RAM的列读地址+2 赋给列边界写数据   ????
                col_border_ram_we  <= 1'b1;                                        //写使能
            end
            else
                col_border_ram_we <= 1'b0;                                        //若列像素无变化则不写
            if(v_rise) begin
                num_row_t <= num_row_t + 1'b1;
                row_border_addr_wr <= row_border_addr_wr + 1'b1;
                row_border_data_wr <= v_raddr - 2'd2;
                row_border_ram_we  <= 1'b1;
            end
            else if(v_fall) begin
                row_border_addr_wr <= row_border_addr_wr + 1'b1;
                row_border_data_wr <= v_raddr + 2'd2;
                row_border_ram_we  <= 1'b1;
            end
            else
                row_border_ram_we  <= 1'b0;
        end

最佳答案

查看完整内容[请看2#楼]

投影分为水平投影和垂直投影,垂直投影区分的是左右边界,水平投影区分的是上下边界,至于h_raddr对应的是此时边界的坐标,加减2是为了后面特征识别模块画边界线时不是那么紧贴数字,这里你可以改成其他数值
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

132

帖子

0

精华

高级会员

Rank: 4

积分
648
金钱
648
注册时间
2020-4-21
在线时间
83 小时
发表于 2020-7-15 10:56:32 | 显示全部楼层
投影分为水平投影和垂直投影,垂直投影区分的是左右边界,水平投影区分的是上下边界,至于h_raddr对应的是此时边界的坐标,加减2是为了后面特征识别模块画边界线时不是那么紧贴数字,这里你可以改成其他数值
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2020-7-16 01:49:46 | 显示全部楼层
帮顶
回复

使用道具 举报

2

主题

132

帖子

0

精华

高级会员

Rank: 4

积分
648
金钱
648
注册时间
2020-4-21
在线时间
83 小时
发表于 2020-7-16 09:28:10 | 显示全部楼层
“从u_h_myram里读完一行的列黑白数据,投影就完成了?”至于你这个疑问,前面的一个ram已经将所有的产生变化的横坐标和纵坐标都已经存入进去了,现在只要把所有的地址都读出来就可以区分边界了
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-10-30
在线时间
14 小时
 楼主| 发表于 2020-7-16 21:20:15 | 显示全部楼层
932904676xy 发表于 2020-7-16 09:28
“从u_h_myram里读完一行的列黑白数据,投影就完成了?”至于你这个疑问,前面的一个ram已经将所有的产生变 ...

谢谢!你说的我差不多都理解了,还有一些新的问题
第一个问题:ram 的深度只能存1行的像素值么,那一帧的数据怎么办?我看状态之间的转换是靠帧同步信号转换的。
第二个问题:C:\Users\卖报的小行家\Desktop,可能是我对垂直投影的像素判断不明白,为什么每次h_rise,列数num_col就会+1,想识别1行4列的数字,num_col就因该是4啊,可是按代码理解的话一个数字应该有很多h_rise呀
第三个问题:代码里的垂直投影意思是在一条竖线上从上到下依次判断会不会h_rise么? lala.jpg
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-10-30
在线时间
14 小时
 楼主| 发表于 2020-7-17 08:01:14 | 显示全部楼层
932904676xy 发表于 2020-7-16 09:24
投影分为水平投影和垂直投影,垂直投影区分的是左右边界,水平投影区分的是上下边界,至于h_raddr对应的是 ...

谢谢!你说的我差不多都理解了,还有一些新得问题。
第一个问题:ram 的深度只能存1行的像素值么,那一帧的数据怎么办?我看状态之间的转换是靠帧同步信号转换的。
第二个问题:file:///C:/Users/%E5%8D%96%E6%8A%A5%E7%9A%84%E5%B0%8F%E8%A1%8C%E5%AE%B6/Desktop,可能是我对垂直投影的像素判断不明白,为什么每次h_rise,列数num_col就会+1,想识别1行4列的数字,num_col就因该是4啊,可是按代码理解的话一个数字应该有很多h_rise呀
第三个问题:代码里的垂直投影意思是在一条竖线上从上到下依次判断各个像素点会不会h_rise么? lala.jpg
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-10-30
在线时间
14 小时
 楼主| 发表于 2020-7-18 08:32:47 | 显示全部楼层
自顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 11:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表