2013-07-09 2 views
2

У меня есть изображение с рисунком в середине и вокруг него белая область. Я надеялся вырезать только шаблон в прямоугольнике, оставив лишнюю лишнюю белую область, т. Е. Автоматически выбрать ROI. Теперь я попытался сделать это, преобразовывая изображение в оттенки серого и находя все точки с пиксельными значениями, не равными 255 с помощью find.Автоматическое определение ROI в matlab

После этого я просто использую max и min значения x и y не белых пикселей, чтобы определить прямоугольник, который будет использоваться imcrop, но по какой-то причине он не совсем походит на то, что я ожидал. Может ли кто-нибудь дать мне представление о том, что случилось?

Вот код

function [] = Roi() 

imgData=rgb2gray(imread('1.jpg')); 

[A,B]=find(imgData~=255); 

xmin=min(A); 

xmax=max(A); 

ymin=min(B); 

ymax=max(B); 

width = xmax - xmin; 

height = ymax - ymin; 

imgSelect = imcrop(imgData,[xmin,ymin,width,height]); 

imshow(imgSelect); 

end 

ответ

2

find возвращает результат в формате строки \ столбец и NOT X/Y. для вашего кода для работы вам просто нужно изменить

[B, A] = find(imgData ~= 255); 
+0

thanks..that решил одну проблему, но по какой-то причине я не могу получить надлежащие ROI таким образом. – Roy

+0

любые предложения? – Roy

+0

@Roy, что вы подразумеваете под «не может получить правильные ROI»? какая проблема была решена и какова проблема, с которой вы все еще сталкиваетесь? Можете ли вы загрузить пример изображения, текущий извлеченный ROI и желаемую рентабельность? – Shai

Смежные вопросы