Как найти расположение красной области на первом изображении и пометить одно и то же местоположение в полутонах с использованием Matlab?Как найти расположение красной области в изображении с помощью MATLAB?
ответ
Надежда это продолжение this question.
Я хотел бы предложить вам, что первым прочитал несколько хороших и фундаментальных книг по обработке изображений. Я рекомендую эту книгу: Digital image processing using MATLAB by Gonzalez.
Во всяком случае в отношении Вашего вопроса:
1) Преобразование изображения в R, G, B плоскости.
Image_red = Image_rgb(:,1);
Image_green = Image_rgb(:,2);
Image_blue = Image_rgb(:,3);
2) Поскольку требуется регион имеет высокое содержание красного цвета (в соответствии с изображением в вашем вопросе), возьмите R плоскость и порог для соответствующего значения.
BW = im2bw(Image_red, threshold value)
3) Вы получаете двоичное изображение, где штрих-кода область один цвет (предположим, белый) и другая часть другого цвета (черный).
4) Теперь найдите местоположение этой белой области как минимальный ограничивающий прямоугольник.
STATS = regionprops(BW, 'BoundingBox')
Как только вы получили это местоположение как прямоугольник, сделайте все, что захотите. Например, для выделения штрих-кода для распознавания штрих-кодов, обрезать этот прямоугольник из исходного изображения, используя imcrop команду:
barcode = imcrop(original_image, rect)
(я знаю, что код не является полным, я дал только намеки команд использовать, потому что, я.. не знакомы с Matlab, и я использую opencv для обработки изображений. Но я уверен, что это простая задача, и вы можете закончить код).
EDIT:
После того, как я реализовал формулу дифференцирования и применять фильтрации нижних частот, изображение я получил в оттенках серого. Я просто применил порог, чтобы получить только области с высокой освещенностью (включая область штрих-кода) и затемнить все остальные части. Теперь примените некоторую эрозию, чтобы удалить простые шумы или небольшое ложное обнаружение. Применять дилатацию для компенсации. Теперь найдите контур с максимальной площадью (что, скорее всего, штрих-код). Возьмите для него наименьший возможный ограничивающий прямоугольник. Это ваш штрих-код. (Я только что реализовал его в OpenCV Python. Я не знаю, как это сделать в Matlab). Ниже некоторые результаты испытаний:
Ниже приведен код OpenCV:
#### Code for BARCODE detection ######
import cv,sys
imgco = cv.LoadImage('image.jpg')
img = cv.CreateImage(cv.GetSize(imgco),8,1)
imgx = cv.CreateImage(cv.GetSize(img),cv.IPL_DEPTH_16S,1)
imgy = cv.CreateImage(cv.GetSize(img),cv.IPL_DEPTH_16S,1)
thresh = cv.CreateImage(cv.GetSize(img),8,1)
### Convert image to grayscale ###
cv.CvtColor(imgco,img,cv.CV_BGR2GRAY)
### Finding horizontal and vertical gradient ###
cv.Sobel(img,imgx,1,0,3)
cv.Abs(imgx,imgx)
cv.Sobel(img,imgy,0,1,3)
cv.Abs(imgy,imgy)
cv.Sub(imgx,imgy,imgx)
cv.ConvertScale(imgx,img)
### Low pass filtering ###
cv.Smooth(img,img,cv.CV_GAUSSIAN,7,7,0)
### Applying Threshold ###
cv.Threshold(img,thresh,100,255,cv.CV_THRESH_BINARY)
cv.Erode(thresh,thresh,None,2)
cv.Dilate(thresh,thresh,None,5)
### Contour finding with max. area ###
storage = cv.CreateMemStorage(0)
contour = cv.FindContours(thresh, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)
area = 0
while contour:
max_area = cv.ContourArea(contour)
if max_area>area:
area = max_area
bar = list(contour)
contour=contour.h_next()
### Draw bounding rectangles ###
bound_rect = cv.BoundingRect(bar)
pt1 = (bound_rect[0], bound_rect[1])
pt2 = (bound_rect[0] + bound_rect[2], bound_rect[1] + bound_rect[3])
cv.Rectangle(imgco, pt1, pt2, cv.CV_RGB(0,255,255), 2)
cv.ShowImage('img',imgco)
cv.WaitKey(0)
Попробуйте этот код. Если вы понимаете код, попробуйте преобразовать его в matlab. Вы можете видеть OpenCV documentation here.
как я могу продолжить эту кодировку? Последняя часть моего кодирования - это ... figure(), ColourBar = imagesc (C); цветная полоса; – Kim
Является ли вывод этого кода таким же, как и первое изображение в вашем вопросе? Я имею в виду высокий красный цвет в месте штрих-кода? –
yup !! кодирование происходит отсюда [ссылка] (http://stackoverflow.com/questions/9005746/applying-the-formula-to-determine-the-barcode-matlab) – Kim
- 1. найти долину с Matlab в бинарном изображении
- 2. Как найти границы области в изображении с помощью python?
- 3. Как найти начальный пиксель в изображении с помощью matlab
- 4. Как найти изменение цвета фона в изображении с помощью MATLAB?
- 5. matlab суммарная область области ограничения на изображении
- 6. Как найти расположение пикселов в исходном изображении в ios
- 7. Как программно найти расположение пикселей определенных объектов в изображении?
- 8. Matlab: найти основную ось двоичной области
- 9. Расширение границ объекта в изображении и заполнение замкнутой области с помощью MATLAB
- 10. Как подключить отключенные точки в изображении с помощью Matlab?
- 11. Случайное расположение пикселя в изображении
- 12. Набросок рассеяния на изображении с помощью MATLAB
- 13. Как получить положение курсора в изображении с помощью Matlab
- 14. Как распознать интенсивности цвета в изображении с помощью matlab
- 15. Как найти дыры в объектах в изображении Matlab?
- 16. как найти пространственные частоты линии в изображении в MATLAB
- 17. Как найти локальные максимумы в изображении в MATLAB?
- 18. Matlab: найти и обработать объект на изображении
- 19. найти расположение максимальных пиков в заговоре с MATLAB
- 20. MATLAB: найти подключенный компонент по расположению пикселей в двоичном изображении
- 21. Идентификация красной точки в изображении JPEG в микроконтроллере
- 22. Найти ближайшую точку маркированной области к точке изображения с Matlab
- 23. Какое расположение redis.conf в официальном изображении докеров?
- 24. OpenCV - расположение всех ненулевых пикселей в двоичном изображении
- 25. Нажимаемые области на изображении
- 26. Как сделать медианный фильтр на индексированном изображении с помощью MATLAB?
- 27. Как нарисовать прямоугольники на изображении с помощью Matlab?
- 28. Как интерполировать координаты вектора на изображении с помощью MATLAB?
- 29. Как подсчитать количество лиц на изображении с помощью MATLAB?
- 30. Найти ребра (грани графа) в двоичном изображении с помощью OpenCV
Ну, я получаю результат градиента как изображение graylevel, а не цветное изображение, как показано на первом изображении. Я думаю, что это просто цветовое представление уровня освещенности изображения. В этом случае вам необходимо выровнять изображение для подходящего значения, чтобы изолировать области с высокой освещенностью.Я отредактировал свой ответ для этого. –
@Kim Просто любопытно: как было создано первое изображение? –