解决imshow显示图像为纯白或者纯黑或者为杂点(noise)(上篇)

最近在刷题和写论文,没怎么更新博客,在毕业之前争取发表2篇论文写2个专利,也算是不虚度硕士生涯了(自我安慰)。

进入正题:

问题背景:

由于待投论文需要可视化网络的权值图来看看网络学习到了什么,然后我自己写了一个 small program. 由于项目的需要,我把权值图保存成了matrix,然后用matlab进行显示,然后出了这个问题。

 

1)有问题的方法如下:

这个是读文件的code,很easy,然而就是这个地方出了问题......

function G = readpng(filename)
G = imread(filename);
G = im2double(G).*255;
G = reshape(G,92*112,[]);
end

这个是用于读取权值画图的code:

for i = 1: network.layer_2.neuron_number %Y区域一共400个神经元
    a = network.layer_2.neuron(i).bottom_up_weight; 
    b = reshape(a',network.width,network.height); 
    max_temp = max(a);
    min_temp = min(a); 
    b = (b-min_temp)./(max_temp-min_temp);
    b = b';
    row = floor((i-1)/number_total)+1;  %i = 1时,第一行,floor是地板除
    col = i- (row-1)*number_total;  %i = 1 时,第一张图放在第一行第一列
    start_col = (row-1)*network.width+1;
    end_col = row*network.width;   % 第一幅图布局为1到64列,64是图像的width
    start_row = ((col-1)*network.height+1);
    end_row = (col*network.height); %1到88行是图像的height
    stem_xy(start_row:end_row,start_col:end_col)...
        = b;
end
imshow(stem_xy);
figure

 然后我可视化权重后显示如下:

 

看到这种显示,很容易想到是不是读进来的数据排列方式不对?然后开始尝试,结果我就改了如下处:

2)正确的方法如下:

function G = readpng(filename)
G = imread(filename);
G = G’  % 就改了这一行
G = im2double(G).*255;
G = reshape(G,92*112,[]);
end

然后就显示正确了,正确结果如下。然后就想了下为什么,现总结如下:

 下篇做分析和总结

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值