Matlab-在图像上放置矩形 [英] Matlab- Put rectangle on image

查看:705
本文介绍了Matlab-在图像上放置矩形的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的图像上有一个滑动窗口。如果该窗口内的平均强度> 210,则在该窗口上计算GLCM特征。如果GLCM功能符合if语句中的条件,则应在此滑动窗口周围绘制一个矩形。我使用下面的代码尝试了这个,但矩形不在图像上的正确位置。我不确定是否已将绘制矩形的代码放在错误的位置或者我是否通过了错误的坐标。有人可以帮我吗?

I have a sliding window on my image. If the average intensity within that window is > 210 then GLCM features are calculated on that window. If the GLCM features meet the conditions in the if statements then a rectangle should be drawn around this sliding window. I have tried this using the following code however the rectangle is not in the correct position on the image. I am unsure if I have put the code which draws the rectangle in the wrong place or if I have passed in the wrong coordinates. Can anyone help me with this please?

N2=8;
info2 = repmat(struct, ceil(size(Z, 1) / N2), ceil(size(Z, 2) / N2)); 
for row1 = 1:N2:size(Z, 1)%loop through each pixel in the 8x8 window
    for col1 = 1:N2:size(Z, 2)
        x = (row1 - 1) / N2 + 1;
        y = (col1 - 1) / N2 + 1;

        imgWindow2 = Z(row1:min(end,row1+N2-1), col1:min(end,col1+N2-1));
        average2 = mean(imgWindow2(:));
        window2(x,y).average=average2;

        if average2>210
            offsets0 = [0 1];
            glcms = graycomatrix(imgWindow2,'Offset',offsets0);
            stats = graycoprops(glcms,'all');

            correlation=[stats.Correlation];  
            contrast=[stats.Contrast];
            homogeneity=[stats.Homogeneity];
            energy=[stats.Energy];

            %if these conditions are met then this window contains an ROI
            if (homogeneity > 0.9)
                if  (contrast<0.2)
                    if (energy>0.6)                                                      
                        %%show the ROI on the original image%%
                        Z1  = insertShape(Z, 'rectangle', [x y 32 32]);
                        figure(2);      
                        imshow(Z1);
                    end                                                                                           
                end
            end
        end % end if>210
    end 
end % window


推荐答案

尝试使用[col1 row1 32 32]而不是[xy 32 32]。我不明白你为什么以你的方式计算x和y。你最终用x和y切换,它们在单元格中,而不是像素。

Try using [col1 row1 32 32] instead of [x y 32 32]. I don't understand why you are computing x and y the way you do. You end up with x and y switched, and they are in "cells", not in pixels.

这篇关于Matlab-在图像上放置矩形的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆