• MATLAB 用 imresize() 函数缩小图象是 double 和 uint8 有差别


    今天发现一个奇怪的现象。

    在用 imresize() 缩小图象时,如果图象时 double 格式的,缩小后会产生不连通的现象。

    下面是原图:

    对这张图象 img 做 simg = imresize(img, 1/2) 后,下面是 imshow(simg>0) 的结果。

    左边是 class(img) = uint8,右边是 class(img) = double。

    可以发现,double 时,边缘有不连通现象,且 bwconncomp(simg>0) 返回的结果是:

    Connectivity: 8
    ImageSize: [344 306]
    NumObjects: 116
    PixelIdxList: {1x116 cell}

    而 uint8 时返回的结果是:

    Connectivity: 8
    ImageSize: [688 611]
    NumObjects: 1
    PixelIdxList: {[336419x1 double]}

    暂时还没研究其原因,等找到了再补上。

    生成这些图的代码如下:

     1 img = imread('0110.bmp');
     2 L = rgb2gray(img);
     3 imwrite(L,'gray.png');
     4 
     5 bwconncomp(L>0)
     6 
     7 sL = imresize(L,1/2);
     8 
     9 bwconncomp(sL>0)
    10 
    11 imwrite(sL>0, 'uint8.png')
    12 
    13 L = rgb2gray(im2double(img));
    14 
    15 bwconncomp(L>0)
    16 
    17 sL = imresize(L,1/2);
    18 
    19 bwconncomp(sL>0)
    20 
    21 imwrite(sL>0, 'double.png')
  • 相关阅读:
    文件同步工具
    截图工具
    DBF文件工具
    Oracle旗下的开源虚拟机
    远程协助工具
    切换网络IP工具
    MySQL(C#的链接姿势)
    大写URL转小写
    一个textview实现文字在图片上面的效果
    通过代码设置textview颜色
  • 原文地址:https://www.cnblogs.com/shalijiang/p/3723505.html
Copyright © 2020-2023  润新知