Используя некоторый критерий, на изображении, которое меня не интересует, есть несколько пикселей. Поэтому я хотел бы их игнорировать. Я просто хочу спросить, приемлемый ли мой подход. Я присвоил этим пикселям отрицательное значение. Будет ли это приемлемо? И что это означает, когда пиксель имеет отрицательное значение? Будет ли это изображение на изображении?Присвоение отрицательного значения пикселю
ответ
Это зависит от того, как вы используете изображение. Отрицательное значение в пикселе не имеет real. Но если вы используете Matlab функция imshow(img,[])
будет масштабировать все значения с учетом -1 как наименьшее число (поэтому оно будет отображаться на выходе).
Предпочтительно использовать маска. Маска - это двоичный массив того же размера изображения, который указывает, является ли пиксель действительным (1) или нет (0).
Например, в OpenCV существует множество функций, которые могут использовать маску (последний аргумент const CvArr* mask = NULL
). Вот вам пример того, как использовать маску в OpenCV:
Mat srcImage; //RGB source image
//Create a mask. Here we select a rectangle:
Mat mask = Mat::zeros(srcImage.size(), CV_8U); // type of mask is CV_8U
Mat roi(mask, cv::Rect(10,10,100,100));
roi = Scalar(255, 255, 255);
//Apply any function to the srcImage ONLY in the points selected by a mask
SurfFeatureDetector detector();
std::vector<KeyPoint> keypoints;
detector.detect(srcImage, keypoints, mask); // passing `mask` as a parameter
Если тип данных позволяет, как знаковое целое число (CV_32S) или с плавающей точкой (CV_32F или CV_64F), это имеет смысл использовать отрицательные значения, и это очень распространенный способ указания игнорируемых пикселей. В этом случае нет никакого особого значения для отрицательного значения, кроме вашей интерпретации.
С другой стороны, если вы используете 8-разрядные неподписанные изображения (CV_8U), это может привести к ошибкам: оно может быть усечено до нуля или преобразовано в [0,255] с использованием добавления по модулю-256, в зависимости от вашей версии opencv. В худшем случае он также может переполняться соседними пикселями и изменять их значения, если вы очень плохо обращаетесь к данным о пикселях. Поэтому, если вы работаете с 8-битными изображениями, вам лучше использовать маску для указания игнорируемых пикселей, как объяснил phyrox.
- 1. Изменение значения отрицательного значения jvectormap
- 2. TimeDiff избежать отрицательного значения
- 3. Ограничение отрицательного значения Hibernate
- 4. меньше отрицательного значения в R
- 5. Проверка отрицательного значения в angularjs
- 6. сохранение отрицательного значения в mysql
- 7. Получение отрицательного значения на md5
- 8. Decimals Для отрицательного PHP значения
- 9. Java: Не добавляя отрицательного значения
- 10. рода отрицательного значения в Unix
- 11. Присвоение значения атрибуту struct
- 12. присвоение значения массива переменной
- 13. Автоматическое присвоение значения директиве
- 14. Присвоение значения компонентам ComboBox
- 15. Присвоение значения памяти
- 16. Javascript/HTML присвоение значения
- 17. присвоение значения массиву
- 18. Присвоение значения формулы ячейке
- 19. Присвоение значения module.exports
- 20. Присвоение значения переменного перечислимой
- 21. присвоение physical.setGravity другого значения
- 22. дополненной Присвоение значения переменной
- 23. Haskell: присвоение значения строке
- 24. Присвоение значения в Golang
- 25. skip присвоение значения const
- 26. C# присвоение значения массиву
- 27. присвоение входного значения переменной
- 28. Присвоение значения UIColor макросам
- 29. присвоение значения не работает
- 30. Автоматическое присвоение значения MYSQL
'Я бы хотел их игнорировать.' Вы просто пренебрегаете им и выполняете операции с другими пикселями. Что касается установки негативных пикселей, да, вы можете, если тип данных изображения поддерживает его. но нет никакого смысла искать физическое представление. значение пикселя обозначает интенсивность этого пикселя, обычно 0 является самым низким (черный) и 255 является самым высоким (белый) для оттенков серого. Поэтому я думаю, что нет смысла спрашивать, что такое интенсивность отрицательного пикселя. –
, поскольку большинство изображений поставляется с * неподписанными * пиксельными типами, что не представляется возможным. но несколько операций opencv позволяют указать маску (например, op применяется только в том случае, если маска не равна нулю) – berak
Множество примеров маскирования, доступных, например. http://www.mathworks.co.uk/matlabcentral/answers/38547-masking-out-image-area-using-binary-mask – YXD