帮我看看这段MATLAB程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮我看看这段MATLAB程序相关的知识,希望对你有一定的参考价值。

%首先读取图片,显示其灰度直方图:
I=imread('Z:\I1.jpg');%读取退化图像 PS=imread('Z:\I7.jpg');
figure,imshow(I); %显示退化图像
figure,imhist(I); %显示图像的灰度值直方图

%然后进行灰度级线性分段增强:
f0=0;g0=0;
f1=20;g1=100;
f2=100;g2=180;
f3=255;g3=255;
r1=(g1-gO)/(f1-f0));
b1=gO-r1*f0;
r2=(g2-g1)/(f2-f1);
b2=g1-r2*f1;
r3=(g3-g2)/(f3-f2);
b3=g2-r3*f2;
[m,n]=size(I);
X2=double(I); %变换矩阵中的每一个元素
fori=1:m
forj=1:n
f=X2(i,j);
g(i,j)=O;
if(f>=0)&(f<=f1)
g(i,j)=r1*f+b1
elseif(f>=f1)&(f<=f2)
g(i,j)=r2*f+b2;
elseif(f>=f2)&(f<=f3)
g(i,j)=r3*f+b3;
end
end
end
J=mat2gray(g);
figure,imshow(J);

%进行对比度调整:
K=imadjust(K,[O.45 0.8],[],O.6);%对比度调整
figure,imshow(K);

%高帽低帽增强图像:
se=strel('disk',5);
Itop=imtophat(K,se);
Ibot=imbothat(K,se);
L=imsubtract(imadd(Itop,L),Ibot);
figure,imshow(L);
%第二次对比度调整:
M=imadjust(L,[0.1 0.4],[],0.8); %对二次对比度调整
figure,imshow(M);

运行后 提示这样的错误
??? Error using ==> d:/matlab6p5/toolbox/images/images/private/checkinput (check_attributes)
Function imhist expected its first input argument, I or X,
to be two-dimensional.

Error in ==> D:\MATLAB6p5\toolbox\images\images\private\checkinput.m
On line 37 ==> check_attributes(A, attributes, function_name, variable_name, ...

Error in ==> D:\MATLAB6p5\toolbox\images\images\imhist.m (parse_inputs)
On line 173 ==> checkinput(a, 'double uint8 logical uint16', '2d', mfilename, 'I or X', 1);

Error in ==> D:\MATLAB6p5\toolbox\images\images\imhist.m
On line 49 ==> [a, n, isScaled, top, map] = parse_inputs(varargin:);

大虾帮忙看看 哪里有问题?
可是 图像必须是 bmp格式??? 黑白的图像用 jpg 格式 不可以么???

参考技术A jpeg文件读进来是三维矩阵,第三维是RGB值
你把它转换成2维矩阵就可以了
另外有些语法错误,比如只需要1个end
参考技术B 需要将彩色图编程灰度图
IY = rgb2ycbcr(I);

J=IY(:,:,1);
之后对J做处理

麻烦bat命令高手们,帮我看看,下面这段代码到底哪里有问题,为啥运行的时候,总提示echo 处于关闭状态

@echo off
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Google\Update\ClientState\8A69D345-D564-463c-AFF1-A69D9E530F96"
if "%errorlevel%"=="0" (
echo 成功
for /f "delims= tokens=3*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Google\Update\ClientState\8A69D345-D564-463c-AFF1-A69D9E530F96" /v "InstallerSuccessLaunchCmdLine"') do ( set str=%%a%%b )
echo %str%
) else (
echo 失败
)
pause
顺便问下,delims= tokens=3*这到底是啥意思?不懂。

参考技术A 因为echo %str% 为空或仅空白符 把 delims= 去掉再试
如果不行,配合作一个测试,把以下一长行代码 : reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Google\Update\ClientState\8A69D345-D564-463c-AFF1-A69D9E530F96" /v "InstallerSuccessLaunchCmdLine" >d:\regtem.txt
复制,然后 开始\运行cmd 之后右键粘贴 回车,找到d:\regtem.txt 把文件内容贴到追问,我再帮你解答
参考技术B @echo off

这个代码就是关闭了echo
后面的echo 如果代码后面没有文字的话就加个点
你后面要用到echo的话最好是这样
echo. (加以个英文的点)

以上是关于帮我看看这段MATLAB程序的主要内容,如果未能解决你的问题,请参考以下文章

通信原理中用Matlab实现AM调制

matlab的非线性优化问题,我自己编了一下,有问题,我把我的程序发上来,希望大虾帮我看下,谢了

你能帮我为matlab中ytop和ybot值的所有'ht'编写代码吗? [关闭]

谁帮我做一下这道matlab

matlab函数中如何获取变量的值比如这段程序我想知道执行后a1和a2的值怎么办啊?

这是个matlab关于添加水印的程序,帮忙看看错在哪