matlab编程 pdf 编程问题,如何求运行结果每行的平均加权(共10行)

查看: 3955|回复: 13
图像加权平均融合问题
两幅图像通过LOWE的SIFT法已拼接在一起,但是加权融合总是不对,请高手指点迷津。
融合程序:
im1_=imread('mos8.jpg');
im2_=imread('mos9.jpg');
mosaic=imread('Mosaic89.jpg');
[m,n,p]=size(im1_);
xv=[524 667 667 507];& && &%划定重叠区域
yv=[16 20 478 472];
for j=1:n;
& && &for i=1:m;
& && && & in=inpolygon(j,i,xv,yv);& &&&%判定图像中的点是否在重叠区域内
& && && & Q(i,j)=
[row,col]=find(Q);
q=size(row,1);
for s=1:q;
& & P=[row(s) col(s)];
& & CorPts1=[16 524 472 507];
& & CorPts2=[20 667 478 667];
& & d1=DisPtToLine(P,CorPts1);& && &%计算点到直线距离,这里即重叠区域中每个点到重叠区域边沿的距离
& & d2=DisPtToLine(P,CorPts2);
& & k1=d1/(d1+d2);
& & k2=d2/(d1+d2);
& & mosaic(row(s),col(s),:)=k1*im1_(row(s),col(s),:)+k2*im2_(row(s),col(s),:);
& & %加权融合计算
imshow(mosaic);
其中DisPtToLine函数是计算点到直线距离的函数,程序如下:
function [d]=DisPtToLine(P,CorPts)
%UNTITLED Summary of this function goes here
%& &Detailed explanation goes here
A=CorPts(4)-CorPts(2);
B=CorPts(1)-CorPts(3);
C=CorPts(4)*[CorPts(3)-CorPts(1)]-CorPts(3)*[CorPts(4)-CorPts(2)];
d=abs(A*P(1)+B*P(2)+C)/sqrt(A^2+B^2)
两幅待融合的左图和右图为附件中的mos8.jpg和mos9.jpg,mosaic89.jpg是将两幅图像叠加拼接后的结果,程序是对其中重叠区域进行加权平均融合运算,但是结果不对,缝合线未能取消,请高手帮忙~
:loveliness: 我也想做这方面的,学习学习,加油
能不能看下你的sift拼接程序,做完配准以后怎么样,怎么样进行拼接。
来学习的。来学习的
你在对图像进行加权融合时没有把图像变成double类型的,变成double类型才可以线性加权,加权完了之后,再把得到的double类型变成uint8类型,就能得到全景图了。
inpolygon()函数,你的区域没有封闭啊,不知道是不是这个问题,我的拙见
你的重合区域的划定的数据xv=[524 667 667 507];& && &yv=[16 20 478 472];
是怎么选定的,是自己手动选的,还是算出来的,关键是正确吗?
路过。。。
请问楼主的图像重叠区域是怎么找出来的?麻烦楼主了
Powered by如何用matlab求一个十乘十矩阵不同行不同列的元素的和的最小值(怎么用编程语言编写哦)_百度知道
如何用matlab求一个十乘十矩阵不同行不同列的元素的和的最小值(怎么用编程语言编写哦)
要面张图片数据哦
提问者采纳
先用xlsreadexcel数据导入matlabnum = xlsread(filename, range)%filname文件名range范围 求用sun求用min同行同列元素意思
比如选了a12
a所在的行和列就不能再选了哦
这样下来选上十个数其和是最小 的就是我们所要求的哦
clc,clear% num=rand(3);num=[1,2,3;4,5,6;7,8,9]row=size(num,1);col=size(num,2);count=perms(1:col);
%对列进行全排列data=zeros(size(count));oricol=zeros(size(count));for j=1:size(count,1)
for k=1:row
data(j,k)=num(k,count(j,k)); %取不同行列元素
oricol(j,k)=count(j,k);
%在原始矩阵中的列标
endenddataoricolresult=min(sum(data,2)) %求和取最小
提问者评价
其他类似问题
编程语言的相关知识
其他1条回答
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎么用matlab求加权有向图的最短路径_百度知道
怎么用matlab求加权有向图的最短路径
其他类似问题
最短路径的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁如何用MATLAB编程把实时测得的TXT文件中的数据求出平均数,并用曲线实时显示,毕业急用,谢谢!_百度知道
如何用MATLAB编程把实时测得的TXT文件中的数据求出平均数,并用曲线实时显示,毕业急用,谢谢!
TXT文件中四组数,分别是黏度,密度,介电常数,温度,标题下面是实时测得的数据。数据都是有传感器实时测得的。
!再帮帮忙吧!
我有更好的答案
MATLAB 主界面,点击file ——import Data 选择你要导入文本文件,如 aa.txt ,[A,B] = size(aa);t = 1:A; plot(t, aa(:,1),'*', t, aa(:,2),'+',t, aa(:,3),'o',t, aa(:,4),'.');得到一个Figure 1的图。在图窗口中 点击 insert ——legend, data1 ,data2 ,data3, data4 分别改为粘度, 密度,介质常数和温度就可以了。求平均值用函数mean()第一列的平均值为:mean(aa(:,1)), 第二列:mean(aa(:,2))……希望能够帮到你
A=dlmread('文件名称.txt')L = length(A);x=1:L; plot(x, A(:,1),'s-', x, A(:,2),'+',x, A(:,3),'o',x, A(:,4),'.');legend('黏度','密度','介电常数','温度')M1=mean(A(:,1));%第一列的平均值M2=mean(A(:,2));M3=mean(A(:,3));M4=mean(A(:,4));
其他类似问题
平均数的相关知识
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁matlab解决重心法选址问题,运行不了啊,求助各位大神 - 计算模拟 - 小木虫 - 学术 科研 第一站
&& 查看话题
matlab解决重心法选址问题,运行不了啊,求助各位大神
这是代码,我是R2013a版的,各位大神帮忙看看啊,我才刚开始接触matlab
function T=TotalCost
while(T1-T0<=0)& && && && && && && && && && && && && && && &
d(i)=sqrt((x0-x(i))^2+(y0-y(i))^2);
T0=T0+a(i)*w(i)*d(i);
& & a1=a1+a(i)*w(i)*x(i)/d(i);
& & a2=a2+a(i)*w(i)/d(i);
& & b1=b1+a(i)*w(i)*y(i)/d(i);
& & b2=b2+a(i)*w(i)/d(i);
& &d(i)=sqrt((x(i)-x1)^2+(y(i)-y1)^2);
& &T1=T1+a(i)*w(i)*d(i);
描述问题,你有什么输入,需要什么输出? : Originally posted by libralibra at
描述问题,你有什么输入,需要什么输出? 就是设施选址的重心法,就是比如说有六个地点,要选择一个配送中心,这个中心到这六个点的运送货物的流量已知,单位费用已知,求这个点,使之到这六个点的配送总费用最小的问题。。。。六个点的坐标已知,求这个点的坐标。。。。非常感谢! : Originally posted by c123_5 at
就是设施选址的重心法,就是比如说有六个地点,要选择一个配送中心,这个中心到这六个点的运送货物的流量已知,单位费用已知,求这个点,使之到这六个点的配送总费用最小的问题。。。。六个点的坐标已知,求这个点 ... 这个你直接按照重心定义求就可以了吗?看做6个质点,每个质点有质量(流量*单位费用),然后直接求加权平均就行了
n = sum(m);
c(1) = x*m'/n;
c(2) = y*m'/n;
scatter(x,y,50,'filled') % 站点
scatter(c(1),c(2),100,'filled') % 重心
: Originally posted by libralibra at
这个你直接按照重心定义求就可以了吗?看做6个质点,每个质点有质量(流量*单位费用),然后直接求加权平均就行了
n = sum(m);
c(1) = x*m'/n;
c(2) = y*m'/n;
s ... 这个是可以,但是还需要有个迭代的过程,麻烦您看一下附件
FT4SR5%3DHWA6UH(MGD((IQ.jpg
QQ截图20.png
QQ截图30.png : Originally posted by libralibra at
这个你直接按照重心定义求就可以了吗?看做6个质点,每个质点有质量(流量*单位费用),然后直接求加权平均就行了
n = sum(m);
c(1) = x*m'/n;
c(2) = y*m'/n;
s ... 我发的那段代码是网上课件里的,需要用到迭代法但我用matlab运行了,上面说是语句有错误,我正在写篇论文,所以很需要用matlab。。。 : Originally posted by libralibra at
这个你直接按照重心定义求就可以了吗?看做6个质点,每个质点有质量(流量*单位费用),然后直接求加权平均就行了
n = sum(m);
c(1) = x*m'/n;
c(2) = y*m'/n;
s ... 这是那个课件里的资料,以及运行结果
QQ截图30.png
QQ截图40.png
QQ截图47.png : Originally posted by c123_5 at
这个是可以,但是还需要有个迭代的过程,麻烦您看一下附件
FT4SR5%3DHWA6UH(MGD((IQ.jpg
QQ截图20.png
QQ截图30.png
... 迭代是可以,问题是既然是重心法,直接能求出来重心,为何要舍近求远取用迭代?不太理解 : Originally posted by libralibra at
迭代是可以,问题是既然是重心法,直接能求出来重心,为何要舍近求远取用迭代?不太理解... 因为可能他不是最优,要有一个验证的过程,可以求偏导,也可以用迭代,迭代不是较容易编程吗?您能看出来问题出在哪了吗? 那个重心是一个粗糙的结果,后面的迭代其实是为了取最优值,使偏导数等于零,大神帮忙看一下吧 大神,请问你搞出来了吗?
var cpro_id = 'u1216994';
欢迎监督和反馈:本帖内容由
提供,小木虫为个人免费站点,仅提供交流平台,不对该内容负责。欢迎协助我们监督管理,共同维护互联网健康,如果您对该内容有异议,请立即发邮件到
联系通知管理员,也可以通过QQ周知,我们的QQ号为:8835100
我们保证在1个工作日内给予处理和答复,谢谢您的监督。
小木虫,学术科研第一站,为中国学术科研研究提供免费动力
欢迎监督,发现不妥请立即
E-mail: & QQ:8835100}

我要回帖

更多关于 matlab gui 编程 的文章

更多推荐

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

点击添加站长微信