找回密码
 注册
Simdroid-非首页
查看: 298|回复: 5

怎么把图形类型转变过来

[复制链接]
发表于 2010-3-23 17:17:05 | 显示全部楼层 |阅读模式 来自 江苏南京
本帖最后由 scott198510 于 2011-7-15 18:19 编辑

怎么把真彩图片类型转换成二值显示呢?
发表于 2011-2-27 10:51:17 | 显示全部楼层 来自 山东烟台
Simdroid开发平台
  1. A=[  2     2     2     3     3     4     4
  2.      2     2     1     1     1     4     4
  3.      6     1     1     1     1     1     4
  4.      6     1     1     1     1     1     5
  5.      6     6     1     1     1     5     5
  6.      6     6     6     6     5     5     5
  7.      6     6     6     6     5     5     5];
  8. hold on
  9. arrayfun(@(i)arrayfun(@(j)line([(j-0.5)*(A(i,j)~=A(i+1,j)),(j+0.5)*(A(i,j)~=A(i+1,j))],[(i+0.5)*(A(i,j)~=A(i+1,j)),(i+0.5)*(A(i,j)~=A(i+1,j))]),1:size(A,2)),1:length(A)-1)
  10. arrayfun(@(i)arrayfun(@(j)line([(i+0.5)*(A(j,i)~=A(j,i+1)),(i+0.5)*(A(j,i)~=A(j,i+1))],[(j-0.5)*(A(j,i)~=A(j,i+1)),(j+0.5)*(A(j,i)~=A(j,i+1))]),1:length(A)),1:size(A,2)-1)
  11. set(gca,'xlim',[0,7],'ylim',[0,7])
  12. A=A';
  13. arrayfun(@(i,j)text(i,j,num2str(A(i,j))),meshgrid(1:7),meshgrid(1:7)')
  14. h=findall(gca,'type','line');
  15. arrayfun(@(i)set(h(i),'linewidth',2),1:length(h))
  16. set(gca,'linewidth',2)
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

2

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-27 12:47:05 | 显示全部楼层 来自 江苏南京
本帖最后由 scott198510 于 2011-7-15 18:18 编辑

用两种方法画出来的效果对比图:矩阵为S1000(附件内):
置0方法画图:
回复 不支持

使用道具 举报

发表于 2011-2-27 13:11:40 | 显示全部楼层 来自 山东烟台
6# scott198510


叠加显示不上的话,请将矩阵旋转90度,逆时针,imrotate函数试试
回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-27 20:12:45 | 显示全部楼层 来自 江苏南京
本帖最后由 scott198510 于 2011-7-15 18:18 编辑

现对矩阵A执行 :
最后得到的图形完全重合了
回复 不支持

使用道具 举报

发表于 2011-2-28 11:26:20 | 显示全部楼层 来自 河北廊坊
本帖最后由 qibbxxt 于 2011-2-28 16:23 编辑

由于时间有限,写了一个面向对象的程序,比较常,也没有经过优化,仅供参考

  1. classdef ColorMatrix
  2.     properties
  3.         Matrix;
  4.         x;
  5.         y;
  6.         vertPos;
  7.         horzPos;
  8.     end
  9.    
  10.     methods
  11.         function obj = ColorMatrix(Matrix, x, y)
  12.             if nargin>0
  13.                 obj.Matrix = Matrix;
  14.                 obj.x = x;
  15.                 obj.y = y;
  16.                 obj.vertPos = [];
  17.                 obj.horzPos = [];
  18.             end
  19.         end
  20.         function obj = findDifferentPos(obj)
  21.             obj.vertPos = find(obj.diff_me(obj.Matrix));
  22.             obj.horzPos = find(obj.diff_me(obj.Matrix'));
  23.         end
  24.         function obj = Pos2Coor(obj)
  25.             if isempty(obj.vertPos) || isempty(obj.horzPos)
  26.                 return;
  27.             end
  28.             [txv,tyv] = obj.ind2sub_me(size(obj.Matrix),obj.vertPos);
  29.             [txh,tyh] = obj.ind2sub_me(size(obj.Matrix),obj.horzPos);
  30.             obj.x = [tyv, txh + 1;tyv + 1, txh + 1];
  31.             obj.y = size(obj.Matrix,1)-[txv, tyh;txv tyh - 1];
  32.         end
  33.         function Plot(obj)
  34.             plot(obj.x, obj.y, 'r','LineWidth',5);
  35.         end
  36.         function obj = DisplayMatrix(obj)
  37.             display_matrix(obj.Matrix, '图形类型转变', '%d');
  38.         end
  39.         function RunPro(obj)
  40.             DisplayMatrix(obj);
  41.             obj = findDifferentPos(obj);
  42.             obj = Pos2Coor(obj);
  43.             Plot(obj);
  44.         end
  45.         
  46.     end
  47.     methods(Static)
  48.         function [x,y] = ind2sub_me(siz,vect)
  49.             [x,y] = ind2sub(siz,vect);
  50.             x = x';
  51.             y = y';
  52.         end
  53.         function x = diff_me(mat)
  54.             x = diff(mat);
  55.             x(size(mat),length(mat)) = 0;
  56.         end
  57.     end
  58. end
复制代码

  1. clear;clc;close all
  2. A =[ 2     2     2     3     3     4     4
  3.      2     2     1     1     1     4     4
  4.      6     1     1     1     1     1     4
  5.      6     1     1     1     1     1     5
  6.      6     6     1     1     1     5     5
  7.      6     6     6     6     5     5     5
  8.      6     6     6     6     5     5     5];
  9. Ma = ColorMatrix(A,[],[]);
  10. Ma.RunPro();
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 13:16 , Processed in 0.047229 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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