matlab取出矩阵的一列怎么在矩阵中取出一个圆内的值

查看: 5360|回复: 12|关注: 0
怎样在灰度图中截取一块圆环区域并得到其灰度矩阵?
<h1 style="color:# 麦片财富积分
新手, 积分 6, 距离下一级还需 44 积分
本帖最后由 wuaowuaowu 于
22:44 编辑
问题:已经读入图像并转化为灰度图,现在想截取原图的局部区域出来计算区域的灰度均值和标准差。因为图形近似呈圆形(圆心位置自己已经确定),所以想截取圆环区域,圆环的宽度做到可以自己设定。分析:因为MATLAB读入图像后,是以数值矩阵的形式保存的。其实是对矩阵的运算,即指定圆环区域,提取这个矩阵在对应圆环局域内的数值进行计算。
求助:希望能写下程序,请大家能指导下,劳烦各位了。
MATLAB 基础讨论版块优秀回答者
<h1 style="color:#9 麦片财富积分
关注者: 10
|此回复为最佳答案
以下是子函数和主程序,你看看吧%& &该函数用于截取指定半径范围内的圆环,统计灰度均值和标准差
%& &创建: Reno_/首次创建
%& &输入:
%& &center :& &&&圆心坐标:行列[r,c]
%& &grayImg:& && &灰度图像
%& &inR,outR:& &&&圆环内外半径
%& &输出:
%& &ringImg :& && && && & 截取后的圆环图像
%& &graymean,graystd:& && &灰度均值和标准差
function [ringImg graymean graystd] = GetRingGray(grayImg,center,inR,outR)
[Row Col] = size(grayImg);%图像大小
tempImg = zeros(Row,Col); %ROI
tempGray = [];
for ir = 1:Row
& & for ic = 1:Col
& && &&&tempR = sqrt((ir-center(1))^2+(ic-center(2))^2);
& && &&&%判断是否在Ring范围内
& && &&&if tempR &= inR && tempR &= outR
& && && && &tempImg(ir,ic) = 1;
& && && && &tempGray = [tempGray grayImg(ir,ic)];
& && &&&end
& & end
end
ringImg = tempImg.*double(grayImg);
graymean = mean(tempGray);
graystd = std(double(tempGray));复制代码%& &Test GetRingGray.m
clear all
close all
clc
im = imread('rice.png');
figure
subplot(121)
imshow(im)
title('原始图像')
center = [128,128];
inR = 40;
outR = 100;
[ringImg graymean graystd] = GetRingGray(im,center,inR,outR);
graymean
graystd
subplot(122)
imshow(mat2gray(ringImg))
title('截取圆环图像')复制代码
<h1 style="color:# 麦片财富积分
以下是子函数和主程序,你看看吧
刚刚才上线,不管怎样,先强烈感谢你!!!帮我大忙了!!我现在去试试程序!
<h1 style="color:# 麦片财富积分
以下是子函数和主程序,你看看吧
测试可以用,效果很好!再次感谢!救命恩人啊!!
<h1 style="color:# 麦片财富积分
测试可以用,效果很好!再次感谢!救命恩人啊!!
你好,为什么我用这段代码的时候会报错呢???? Undefined function or method 'GetRingGray' for input arguments of type 'uint8'.
<h1 style="color:# 麦片财富积分
你好,为什么我用这段代码的时候会报错呢???? Undefined function or method 'GetRingGray' for input a ...
你以函数形式保存到了matlab的路径下了吗?
<h1 style="color:# 麦片财富积分
请问如何处理彩色图像呢
<h1 style="color:# 麦片财富积分
你以函数形式保存到了matlab的路径下了吗?
什么意思?我也遇到同样问题。求指教
<h1 style="color:# 麦片财富积分
以下是子函数和主程序,你看看吧
Error using&&.*
Matrix dimensions must agree.
Error in GetRingGray (line 26)
ringImg = tempImg.*double(grayImg)
是哪里出错了?
<h1 style="color:# 麦片财富积分
以下是子函数和主程序,你看看吧
我也出现了这样的错误
Error using&&.*
Matrix dimensions must agree.
Error in GetRingGray (line 26)
ringImg = tempImg.*double(grayImg)
是哪里出错了?
站长推荐 /3
利用MATLAB进行投资组合优化
Powered by新手求助:如何由矩阵中的某个数值找到其在矩阵中所处的位置?【matlab吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:162,837贴子:
新手求助:如何由矩阵中的某个数值找到其在矩阵中所处的位置?收藏
如题,比如:已知a=[1 2 3;4 5 6];我想知道4的位置,即a(2,1),用什么函数可以得到?
天杞园减肥特膳专为肥胖而生 ,官方微信:tqykf2, 咨询电话:
find(a==4)
[i,j]=find(a==4)
非常谢谢!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
MATLAB如何提取某一矩阵中某一列的部分数据?请给出格式,请注意是部分数据
扫二维码下载作业帮
1.75亿学生的选择
比如矩阵A是10行10列的,提取A的第3行为A(3,:),提取A的第3列为A(:,3)>> a=[1 2 3;4 5 6;7 8 9]a =1 2 34 5 67 8 9>> a(1:2,3)ans =36>> a(1:1,2)ans =2
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 matlab矩阵取出元素 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信