查看: 7829|回复: 12|关注: 0

[已解决] 新手求解:怎么对一个矩阵的每个元素用if语句

[复制链接]

新手

11 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
每个元素大于128的为1,小于128的为0
求助谢谢大家
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

权威

3663 麦片

财富积分



20

主题

3779

帖子

770

最佳答案
  • 关注者: 475
发表于 2015-9-25 23:16:33 | 显示全部楼层
A>128                  
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

140 麦片

财富积分


50500


6

主题

339

帖子

28

最佳答案
  • 关注者: 6
发表于 2015-9-26 11:10:51 | 显示全部楼层
function B=change(A)
[m,n]=size(A);
for i=1:m
    for j=1:n
        if A(i,j)>128
            B(i,j)=1;
        else B(i,j)=0;
        end
    end
end
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2015-9-27 10:39:17 | 显示全部楼层
singingplayer 发表于 2015-9-26 11:10
function B=change(A)
[m,n]=size(A);
for i=1:m

[m,n]=size(I);
  for k=0:1
    for i=1:m
       for j=1:n
         if I(i,j)>(2^k)
             B(i,j)=1;
         else B(i,j)=0;
         end
     end
  end
  subplot(2,4,k+1);imshow(B)
end
figure; imshow(B);
你好,首先谢谢你。根据你的指导,我添加了一点,想显示一共八张图片,matlab提示B的容量不够,运行地非常慢
请问我应该怎么修改呢。因为一共需要做这样的八次,分别是大于128,64,32……为了显示不同的灰度平面。
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

入门

429 麦片

财富积分


50500


1

主题

1022

帖子

90

最佳答案
  • 关注者: 15
发表于 2015-9-27 10:47:06 | 显示全部楼层
  1. close all;
  2. clear;
  3. clc;

  4. I = imread('peppers.png');
  5. J = rgb2gray(I);

  6. figure;
  7. for i = 7:-1:0
  8.     thresh = 2^i/255;
  9.     K = im2bw(J, thresh);
  10.     subplot(2,4,8-i);
  11.     imshow(K);
  12. end
复制代码
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2015-9-27 11:26:27 | 显示全部楼层

你好。多谢指教。请问一下,计算阈值thresh的时候,如果除以255,thresh的范围应该是(0,1),而J本身范围是0~255的,这里不太明白。
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

入门

429 麦片

财富积分


50500


1

主题

1022

帖子

90

最佳答案
  • 关注者: 15
发表于 2015-9-27 11:38:37 | 显示全部楼层
alulululu 发表于 2015-9-27 11:26
你好。多谢指教。请问一下,计算阈值thresh的时候,如果除以255,thresh的范围应该是(0,1),而J本身范 ...

是的,thresh的范围是0~1,这是由于im2bw函数里面都进行了归一化的缘故
如果不想这么写的话 可以使用2L的办法
  1. thresh = 2^i;
  2. K = (J>thresh);
复制代码
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2015-9-27 12:46:09 | 显示全部楼层
zype1128 发表于 2015-9-27 11:38
是的,thresh的范围是0~1,这是由于im2bw函数里面都进行了归一化的缘故
如果不想这么写的话 可以使用2L的 ...

好的。我明白了。谢谢你。:lol
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


2

主题

8

帖子

0

最佳答案
 楼主| 发表于 2015-9-27 13:08:07 | 显示全部楼层
zype1128 发表于 2015-9-27 11:38
是的,thresh的范围是0~1,这是由于im2bw函数里面都进行了归一化的缘故
如果不想这么写的话 可以使用2L的 ...

你好。请问我还可以再问你一个问题吗?
I是一张灰度图片
G_7=bitand(I,128);
I_7=im2uint8(mat2gray(G_7));
这样得到的G_7和I_7有什么区别吗?
为什么把G_7~G_0相加后可以得到原图,而把I_7~I_0相加不能得到原图?

回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

入门

429 麦片

财富积分


50500


1

主题

1022

帖子

90

最佳答案
  • 关注者: 15
发表于 2015-9-27 14:11:51 | 显示全部楼层 |此回复为最佳答案
alulululu 发表于 2015-9-27 13:08
你好。请问我还可以再问你一个问题吗?
I是一张灰度图片
G_7=bitand(I,128);

第一步相当于是用128作阈值进行二值化,
这个二值化和前面im2bw的区别是 这个结果是0和128,而不是0和255
这也就是I_7和G_7的区别。
为什么加起来能得到原图,关键在于理解bitand,和128做bitand就只留下了>=128的部分
而255 = 128+64+32+16+8+4+2+1,累加起来才能得到原图。
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

站长推荐上一条 /5 下一条

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