各种问题与Matlab的appdesigner。

5视图(30天)
伊芙琳LeBeau
伊芙琳LeBeau 2023年4月27日
回答: 伊芙琳LeBeau2023年4月28日
你好,我允许自己发布以来的第一次我遇到“Matlab AppDesigner”问题。首先,我的主要语言是英语,所以我的英语可能点燃cluncky。我从来没有使用过“Matlab AppDesigner”,对我的问题的回答可能是微不足道的(我希望如此)。我们已经要求开发一个应用程序可以做一些 图像处理 如将图像转换为HSV,灰色,添加噪声图像和应用过滤器。sugested的标题,我有各种各样的问题,三是准确的:
1-Display RGB / HSV导入的图片:
我们被要求创建一个按钮,可以让用户选择他想要的照片。我用这段代码(从 在那里 ):
startingFolder =“C: \ Program Files \ MATLAB”;
如果~存在(startingFolder“dir”)
%如果该文件夹不存在,就开始在当前文件夹。
startingFolder = pwd;
结束
%得到文件的名称,用户想要使用。
defaultFileName = fullfile (startingFolder,‘* . jpg”);
[baseFileName,文件夹]= uigetfile (defaultFileName,“选择文件”);
如果baseFileName = = 0
%用户点击取消按钮。
返回;
结束
baseFileName fullFileName = fullfile(文件夹)
app.I = imread (fullFileName);
% % % setappdata(应用,“文件名”,fullFileName);
imshow (app.I“父”,app.UIAxes);
Matlab代码是完美的除了工作似乎没有考虑变量创建内部的按钮是全球性的。我fugured,能用图像存储,如果我这样做:
属性(=公共访问)
%的描述
结束
这个工作,但是我不能够正确显示RGB & HSV频道,我得到这样的结果:
我用这段代码:
app.I;
app.I = (app.I) / 255年翻一番;
I_red = app.I (:: 1);
I_green = app.I (:: 2);
I_blue = app.I (:: 3);
[h, w, d] =大小(app.I);
I_red2 = 0 (h, w, d);
I_green2 = 0 (h, w, d);
I_blue2 = 0 (h, w, d);
I_red2 (:,: 1) = I_red;
I_green2 (:: 2) = I_green;
I_blue2 (:,:, 3) = I_blue;
imshow (I_red2“父”app.UIAxes2_4)
imshow (I_green2“父”app.UIAxes2_5)
imshow (I_blue2“父”app.UIAxes2_6)
似乎“丢失”的图像。奇怪的是,如果我使用imread已经存储的照片,并提供正确的显示:
在这里,我使用了相同的逻辑,除了我以前一个imread(这意味着问题确实来自进口流程):
我= imread (“Sky.jpeg”);
我=双(I) / 255;
I_red =我(:,:1);
I_green =我(:,:,2);
I_blue =我(:,:,3);
(h, w, d) = (I)大小;
I_red2 = 0 (h, w, d);
I_green2 = 0 (h, w, d);
I_blue2 = 0 (h, w, d);
I_red2 (:,: 1) = I_red;
I_green2 (:: 2) = I_green;
I_blue2 (:,:, 3) = I_blue;
imshow (I_red2“父”app.UIAxes_10)
imshow (I_green2“父”app.UIAxes_11)
imshow (I_blue2“父”app.UIAxes_12)
我已经尝试了很多周理解问题是从哪里来的,没有找到一个解决方案。在这两种情况下,代码是相同的。
2-Midfilter RGB和HSV图片:
这是特别的。我不知道如果它是正确的,但我认为你可能将这种滤波器称为“中值滤波”。对于一些存在的,我不能让这些代码的工作(这不是造成这一事实的图片导入用户):
app.I;
IB = imnoise (app.I,的盐和胡椒,0.05);
I_Filter = medfilt2 (IB, [3 3]);
imshow (I_Filter“父”,app.UIAxes);
我只是继续这个错误:
错误使用medfilt2
预期输入数字1一个,是二维的。
错误在medfilt2 > parse_inputs(第107行)
validateattributes (,
错误在medfilt2(49行)
[a, mn, padopt] = parse_inputs (args {:});
有办法改变“(3 3)”,以便它可以改变根据图像大小,如果是问题吗?
3-Low-pass滤波器和高通滤波器并不总是工作:
这个是有点难解释解释因为我不是我不是错了这些过滤器的名字,我要给你我说使用维基百科的照片:
高通滤波器
低通滤波器
我的问题来自我的代码:
h = 1 (3);
h (2, 2) = 9;
app.I = rgb2gray (app.I);
app.I =双(app.I) / 255.0;
F = filter2 (h, app.I);
imshow (F,“父”app.UIAxes)
我用这个密码应用高通滤波器,有时它工作,但有时我得到一个空白广场。发生了同样的事情对我来说与低通滤波器(我有三个低通滤波器应用):
%第一个
app.I;
IG = rgb2gray (app.I);
app.I =双(app.I) / 255.0;
h1 = 1 (3,3) / 9;
F1 = filter2 (h1,搞笑)
imshow (F1,“父”app.UIAxes)
%第二个
app.I;
IG = rgb2gray (app.I);
app.I =双(app.I) / 255.0;
h3 = 1 (7) / 49;
F3 = filter2 (h3,搞笑)
imshow (F3,“父”app.UIAxes)
%第三个
app.I;
IG = rgb2gray (app.I);
app.I =双(app.I) / 255.0;
h2 = 1 (7) / 25;
F2 = filter2 (h2,搞笑)
imshow (F2,“父”app.UIAxes)
这就是,我的帖子migth很长,我很抱歉,我只是想弄清楚。提前谢谢。

答案(1)

伊芙琳LeBeau
伊芙琳LeBeau 2023年4月28日
我找到了一个解决方案,我的第二个问题,就需要使用medfilter3代替medfilter2。

类别

找到更多的在图像处理工具箱帮助中心文件交换

标签

s manbetx 845


释放

R2017b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!