小编ron*_*oni的帖子

计算区域内部或外部的邻域

我在MATLAB中遇到如下问题:

假设我有一个如下所示的矩阵.我想要做的是计算以黄色给出的像素的平均值.(ans是108) 在此输入图像描述

如果给出的选项在外面,将计算这一点.

另一方面,如果选项是作为内部给出的,那么在图像中执行的操作. 在此输入图像描述

**我想编写一个算法,根据手动设置的选项找出标有零的区域内外的平均值.**

****4邻里**或8邻居**可考虑.我想在MATLAB中计算它.你们能帮助我吗?

matlab image-processing neighbours nearest-neighbor

4
推荐指数
1
解决办法
853
查看次数

在matlab中仅提取单元格数组中的单词

我有一组包含来自html页面的预处理文本的文档.它们已经送给我了.我只想从中提取单词.我不希望提取任何数字或常用词或任何单个字母.我面临的第一个问题是这个.

假设我有一个单元格数组:

{'!' '!!' '!!!!)'  '!!!!thanks' '!!dogsbreath'    '!)'    '!--[endif]--'    '!--[if'}
Run Code Online (Sandbox Code Playgroud)

我想让单元格数组只有单词 - 就像这样.

{'!!!!thanks' '!!dogsbreath' '!--[endif]--' '!--[if'}
Run Code Online (Sandbox Code Playgroud)

然后将其转换为此单元格数组

{'thanks' 'dogsbreath' 'endif' 'if'}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?


更新要求:感谢您的所有答案.但是我遇到了问题!让我来说明一下(请注意,单元格值是从HTML文档中提取的文本,因此可能包含非ASCII值) -

{'!/bin/bash'    '![endif]'    '!take-a-long'    '!–photo'}
Run Code Online (Sandbox Code Playgroud)

这给了我答案

{'bin'    'bash'    'endif'    'take'    'a'    'long'    'â'    'photo' }
Run Code Online (Sandbox Code Playgroud)

我的问题:

  • 为什么bin/bash和take-a-long被分成三个单元格?它对我来说不是问题,但仍然是为什么?可以避免这种情况.我的意思是所有来自单个单元格的单词组合成一个单词.
  • 请注意,'!–photo'存在一个非ascii字符â,这实际上意味着a.可以合并一个步骤,以便这种转换是自动的吗?
  • 我注意到文字"it? __________ About the Author:"给了我"__________"一个字.为什么会这样?
  • 文本也"2. areoplane 3. cactus 4. a_rinny_boo... 5. trumpet 6. window 7. curtain ... 173. gypsy_wagon..."返回一个单词'areoplane' 'cactus' 'a_rinny_boo' 'trumpet' 'window' …

matlab

4
推荐指数
1
解决办法
268
查看次数

排序成对最短距离

这是我的问题.

clc; clear all; close all;  
N = 10;
R = randn(N,1)+10;R(end) = R(1);
tht = linspace(0,2*pi,N).';
x = R.*cos(tht);
y = R.*sin(tht);
plot(x, y,'o-b');
Run Code Online (Sandbox Code Playgroud)

随机排序数组

X = x(randperm(size(x,1)),:);
Y = y(randperm(size(y,1)),:);
hold on, plot(X,Y,'o-r');
Run Code Online (Sandbox Code Playgroud)

可以看出,绘制的轮廓具有重叠区域.所以我想绘制一个不重叠的闭合轮廓.我得到的一个想法是通过对矩阵的元素进行排序,使得矩阵元素之间的相邻距离最小.所以最近的点将彼此相邻.

任何人都可以指定我怎么做吗?我尝试使用pdist2但失败了.

matlab shortest

2
推荐指数
1
解决办法
707
查看次数

蒙太奇的灰度和彩色图像

大家好我正在使用matlab的蒙太奇命令来显示图像.但是我遇到了一个问题.我使用的命令如下:

dirOutput = dir('C:\Users\DELL\Desktop\book chapter\Journal chan vese\robust 

contour initialization\book for document\4 phase\*.jpg');
fileNames = {dirOutput.name}'
montage(fileNames, 'Size', [1 6]);
export_fig combined1.jpg -r300
Run Code Online (Sandbox Code Playgroud)

我有6张图片(所有灰度).但是,命令提示符立即抛出这样的错误:

//Error using montage>getImagesFromFiles (line 349)
//FILENAMES must contain images that are the same size.

//Error in montage>parse_inputs (line 225)
//    [I,cmap] = getImagesFromFiles(varargin{1});

//Error in montage (line 112)
//[I,cmap,mSize,indices,displayRange] = parse_inputs(varargin{:});

//Error in montage_pics (line 3)
//montage(fileNames, 'Size', [1 6]);
Run Code Online (Sandbox Code Playgroud)

我甚至在这里上传了一些图片:

123

可以清楚地看到,所有图像都是灰度级的.然后我读了图像大小,它们如下:

1.128X128 2.128X128*3 3.128X128*3 4.128X128 5.128X128*3 6.128X128*3. 因此,一些图像被视为确实是彩色图像.

我的问题是如何使用蒙太奇命令这样的图像.另一个问题是蒙太奇命令总是需要相似大小的图像.所以我想避免这个漏洞.

当然,我可以使用软件工具将图像转换为所需的格式,但这是一种糟糕的工作方式.我相信下面的代码如果添加到我的原始代码将解决这个问题

%Read Each Image …
Run Code Online (Sandbox Code Playgroud)

matlab image-processing montage

2
推荐指数
1
解决办法
2614
查看次数

使用 MATLAB 保存为变量文件名

我有很多图片都在一个名为1.jpg、2.jpg、3.jpg等的目录中,我一一阅读。我做一些操作然后我保存它们。

我想自动化这个操作。我可以读取图像名称。然后在生成输出文件时,我从输入文件名中提取 image_name,添加我需要的扩展名,添加我想要保存的文件类型,然后通过打印命令保存图像。

%//Read the image
imagefiles = dir('*.bmp');      
nfiles = length(imagefiles);    % Number of files found
for ii=1:nfiles
    currentfilename = imagefiles(ii).name;
    currentimage = imread(currentfilename);
    images{ii} = currentimage;
    Img=currentimage;

    %//Do some operation on the image

    %//Save the image file
    h=figure;
    %//Display the figure to be saved  
    token = strtok(currentfilename, '.');
    str1 =  strcat(token,'_op');
    print(h,'-djpeg',str1);
end
Run Code Online (Sandbox Code Playgroud)

这个程序运行良好,但后来我发现了这个命令来绘制漂亮的图形。 export_fig

export_fig 采用以下形式的基本命令:

export_fig file_name.file_type
Run Code Online (Sandbox Code Playgroud)

如何自动替换存储为 str1 的输出文件名代替 export_fig 命令中的 file_name 占位符。

注意:请注意 export_fig 文档中的这一点(对于变量文件名)

for a = 1:5
plot(rand(5, 2));
export_fig(sprintf('plot%d.png', a));
end …
Run Code Online (Sandbox Code Playgroud)

printing matlab image-processing save-as

1
推荐指数
1
解决办法
5070
查看次数