Название: Qwt. Отображение спектрограммы Отправлено: Akon от Май 25, 2014, 19:09 Имеем QwtPlot и QwtPlotSpectrogram. По вертикали имеется порядка 4000 точек. Нужно отобразить горизонтальную линию шириной в 1 точку. Проблема в том, что она исчезает при отображении из-за того, что слишком тонкая. Какие могут быть предложения?
Название: Re: Qwt. Отображение спектрограммы Отправлено: Akon от Май 27, 2014, 07:45 Проблема, очевидно, в том, что при интерполяции эта линия исчезает. Тогда вопрос: какие известные методы интерполяции изображений можно применить в данном случае? Конечно, я могу легко придумать подходящий мне метод (и это скорее всего будет так), просто хочу знать что применяется в таких случаях, как это называется (терминология).
Название: Re: Qwt. Отображение спектрограммы Отправлено: Igors от Май 27, 2014, 08:26 Проблема, очевидно, в том, что при интерполяции эта линия исчезает. Неясно что понимается под "интерполяцией" в данном случае. Я понял что высота 4K масштабится в гораздо меньшую (видимых пикселей), в результате тонкая линия исчезает. Теоретически на увеличение лучше всего bicubic, на уменьшение bilinear. Можно и по-народному: при уменьшении изображения задать большой вес данному цвету. Но все это подразумевает что Вы сами будете масштабить (из одного буфера пикселей в другой). Я бы с этим не связывался - проще отрисовать поверх или дать бОльшую толщину с учетом масштаба. Название: Re: Qwt. Отображение спектрограммы Отправлено: Akon от Май 27, 2014, 10:48 Да, вы точно все поняли. Это все в контексте Qwt. Там есть класс QwtRasterMatrixData, который имеет два метода: ResampleMode { NearestNeighbour, BilinearInterpolation }. Ни тот ни другой не работают (в смысле линия исчезает). Поэтому, я буду вынужден делать свой метод, который будет работать точно как вы сказали (с весом, "по-народному").
Если обрисовать задачу предметно, то, например, пусть имеем 10 точек {0 1 0 1 0 1 9 0 1 1} из которых формируется 1 пиксель экрана. Среднее значение равно 14, т.е. "средняя" интенсивность цвета пикселя равена 1.4. Т.е. 9-ка как бы "исчезает". Мне же нужно, используя нелинейный вес как функцию интенсивности цвета точки, получить, например, 8.5. Так вот, возможно, что все эти нелинейности в контексте теории обработки изображений определены (может быть с учетом особенностей человеческого восприятия) и имеют соответствующие названия и т.п. И еще вопрос, связанный с человеческим восприятием. Допустим имеем квадрат 10x10 пикселей: 0 1 0 1 0 1 9 0 1 1 0 1 0 1 0 1 9 0 1 1 ... 0 1 0 1 0 1 9 0 1 1 С некоторого расстояния этот пиксель увидится как еле различимое пятнышко. Какой у него будет цвет? Название: Re: Qwt. Отображение спектрограммы Отправлено: Igors от Май 27, 2014, 14:19 Если обрисовать задачу предметно, то, например, пусть имеем 10 точек {0 1 0 1 0 1 9 0 1 1} из которых формируется 1 пиксель экрана. Среднее значение равно 14, т.е. "средняя" интенсивность цвета пикселя равена 1.4. Т.е. 9-ка как бы "исчезает". Мне же нужно, используя нелинейный вес как функцию интенсивности цвета точки, получить, например, 8.5. Можно напр взять корень из суммы квадратов или просто поставить вместо 9 большое число - но попрет алиас. Если буфер на руках, то лучше "размазать" 9 в буфере по колокольчику, в результате напр {0 1 0 1 4 7 9 7 4 1} а затем пусть Qwt масштабит.И еще вопрос, связанный с человеческим восприятием. Допустим имеем квадрат 10x10 пикселей: Можно рассуждать так: с девяткой яркость 1.4, без нее 0.5. То есть девятка увеличила яркость почти в 3 раза 0 1 0 1 0 1 9 0 1 1 0 1 0 1 0 1 9 0 1 1 ... 0 1 0 1 0 1 9 0 1 1 С некоторого расстояния этот пиксель увидится как еле различимое пятнышко. Какой у него будет цвет? Инвертируем буфер 9, 8, 9, 8, 9, 8, 0, 9, 8, 8 = 0.76 яркость. А исходная 0.85. Т.е. нолик уменьшил яркость, но совсем ненамного (0.76 / 0.85). Что подтверждается житейским опытом - белая линия на черном фоне смотрится ярко и жирно, а черная на белом - наоборот тонко Название: Re: Qwt. Отображение спектрограммы Отправлено: Akon от Май 27, 2014, 16:01 Спасибо за разъяснение.
Цитировать то лучше "размазать" 9 в буфере по колокольчику Да-да. Именно такие колокольчики меня и интересуют. Если не затруднит, можете поподробнее?Название: Re: Qwt. Отображение спектрограммы Отправлено: Igors от Май 27, 2014, 16:26 Да-да. Именно такие колокольчики меня и интересуют. Если не затруднит, можете поподробнее? Я в таких случаях делаю так:- задаю ширину полосы (напр 5 пикселей) и "хвостик" - напр 0.1 (это вес последнего размазанного, самый меньший). Форма колокола напр e ^ (k * x * x). Тогда находим k х = 5 / 2 = 2.5 // половина полосы 0.1 = e ^ (k * x * x) ln(0.1) = k * x * x k = ln(0.1) / 6.25 И заполняю вектор весов для точек
[2] = e ^ (k * 2 * 2) [3] = e ^ (k * 3 * 3) Можно еще др форму вместо квадрата, тогда k * x ^ n, но обычно в этом нет необходимости Название: Re: Qwt. Отображение спектрограммы Отправлено: Akon от Май 27, 2014, 21:19 Спасибо, принял к сведению.
|