答えて
最終的な目標がパノラマをステッチする場合は、this codeと考えてください。
いずれにしても、重複領域を取得するには、最初に画像を登録する必要があります(重複しているか、数学的に言えば、画像1から画像2への変換を見つける)。そうするには、両方の画像で一致する点を見つける必要があります。
以下のコードは、2枚の画像のための(古いMATLAB関数を使用する、this codeに触発)はありません。
%% >>>>>>> load images and calculate their transformation <<<<<<< %%
im1 = imread('1.png');
im2 = imread('2.png');
imshowpair(im1, im2, 'montage');
% calculate features on grayscale image
im1g = rgb2gray(im1);
im2g = rgb2gray(im2);
points1 = detectSURFFeatures(im1g);
[features1, points1] = extractFeatures(im1g, points1);
points2 = detectSURFFeatures(im2g);
[features2, points2] = extractFeatures(im2g, points2);
% Find correspondences between im1 and im2
indexPairs = matchFeatures(features1, features2, 'Unique', true);
matchedPoints1 = points1(indexPairs(:,1), :);
matchedPoints2 = points2(indexPairs(:,2), :);
% Identity transformation
transform_eye = projective2d(eye(3));
% Estimate the transformation between im1 and im2
% we use a 'similarity' transform (translation/rotation), which treats the
% images as rigid bodys. 'affine'/'projective' transformations allow for
% warping the images itself (the overlap might not be a rectangle).
transform = estimateGeometricTransform(matchedPoints1, matchedPoints2,...
'similarity', 'Confidence', 99.9, 'MaxNumTrials', 2000);
%% >>>>>>> apply transformation to images <<<<<<< %%
% create a world coordinate system (RF) that has space to store
% the reference image (im1) and the transformed image (im2)
R2 = imref2d(size(im2));
[~, R2T]=imwarp(im2,R2,transform);
xLimits=[min(0.5,R2T.XWorldLimits(1)) max(size(im1,2), R2T.XWorldLimits(2))];
yLimits=[min(0.5,R2T.YWorldLimits(1)) max(size(im1,1), R2T.YWorldLimits(2))];
width = round(xLimits(2) - xLimits(1));
height = round(yLimits(2) - yLimits(1));
RF = imref2d([height width], xLimits, yLimits);
% transform both images with regard to the world coordinate system RF
im1t=imwarp(im1,transform_eye,'OutputView',RF); % im1 stays in place (identity transform)
im2t=imwarp(im2,transform,'OutputView',RF); % im2 is transformed
% visualize result
imOverlay = im1t/2 + im2t/2;
imshow(imOverlay);
%% >>>>>>> get the overlap area only <<<<<<< %%
% if you only want the overlap area, apply the transform to image masks
im1bw = ones(size(im1)); % mask1
im2bw = ones(size(im2)); % mask2
im1bwt=imwarp(im1bw,transform_eye,'OutputView',RF); % im1 stays in place (identity transform)
im2bwt=imwarp(im2bw,transform,'OutputView',RF); % im2 is transformed
% visualize result
maskOverlap = im1bwt + im2bwt - 1;
imshow(maskOverlap);
% maskOverlap is a bw image that contains 'true' for overlap pixels
% you can use that for cropping imOverlay or
% use bwarea or regionprops to calculate the area
重複がない場合、結果は何ですか? – Krishna
これはテストしていませんが、コードは 'matchFeatures()'と一致しないか、まったく一致しないので、 'estimateGeometricTransform()'に失敗します。空リスト 'matchedPoints1' /' 2'に対しては、エラーが出るかもしれません。いくつかの(誤った可能性のある)マッチの場合、関数は状態コード '1'(' matchedPoints1とmatchedPoints2入力は十分なポイントを含んでいません) 'または' 2'( '不十分なinliersが見つかりました')を返します。 [here](https://de.mathworks.com/help/vision/ref/estimategeometrictransform.html)を参照してください。コードを堅牢にするには、チェックを追加する必要があります。 – Honeybear
私はこの方法で試しました。それは仕事です。 – Krishna
- 1. ストアマルチ画像MathWorks社のMATLAB
- 2. 私は閉じて、MATLABで画像内の領域を指す見つけようとしているMatlabの
- 3. MathWorks社のMATLAB -
- 4. MathWorks社のMATLAB
- 5. MathWorks社のMATLAB
- 6. MathWorks社のMATLAB
- 7. MathWorks社のMATLAB
- 8. MathWorks社のMATLAB
- 9. MathWorks社のMATLAB
- 10. は、MathWorks社のMATLAB
- 11. にMathWorks社のMATLAB
- 12. MATLABコーディングの難しさ。 MathWorks社のMATLAB
- 13. 交差点MathWorks社のMATLAB
- 14. レジェンドMathWorks社のMATLABプロット
- 15. MATLAB画像処理でマークされた領域の領域を見つけよう
- 16. MATLABで2つの図形の間の領域を見つける方法は?
- 17. opencvで画像間の重複領域を見つける方法は?
- 18. 変換MathWorks社のMATLABステートメントは
- 19. フラット領域のmatlabのピークを見つける
- 20. MathWorks社のMATLAB列ベースの機能
- 21. Matlab:バイナリ領域の長軸を見つける
- 22. 単純マトリクスMathWorks社のMATLAB mannipulation
- 23. は、どのように私はMathWorks社のMATLAB
- 24. MATLABを使用してイメージ内の赤い領域の位置を見つける方法は?
- 25. 私のコードは次のようになりMathWorks社のMATLABで
- 26. Matlab - 画像上の興味のある領域をプロットする
- 27. MATLABシェーディング領域は
- 28. C#で2つの整数範囲の重複領域を見つける#
- 29. (C#で)2つの矩形の重複領域を見つける
- 30. MATLAB GUIの画像領域をマウスでクリックする
あなたの目標を達成するためにこれまで何を試みましたか?私たちはあなたのコードを書くつもりはありませんが、あなたがそれを自分でやろうとしている間に特定の問題に遭遇した場合、あなたを助けるつもりです。 – Max
私はマックスに同意します - あなたはあなたの質問にもっと力を入れ、あなたがどこにいるのかを示してください。 [質問する](http://stackoverflow.com/help/how-to-ask)。また、パノラマステッチングのために必要なものを教えても、実際の問題に合わせてより良い回答が得られます。あなたと人の答えを保存します。それは、私はまだあなたが探しているものであることを願って答えを投稿しました。 – Honeybear